AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL doppelte Datensätze anzeigen...
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL doppelte Datensätze anzeigen...

Ein Thema von NetSonic · begonnen am 20. Nov 2007 · letzter Beitrag vom 24. Dez 2007
Antwort Antwort
Seite 1 von 3  1 23      
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#1

MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 13:57
Datenbank: MySQL • Version: 5 • Zugriff über: ZeosLib
Ich habe eine Kundendatenbank mit ca. 5000 Datensätzen, aus denen ich doppelte Einträge herausfiltern kann. Dazu nutze ich diese Abfrage...

SQL-Code:
SELECT * FROM tblkunden WHERE Nachname != 'AND Vorname != 'AND Nachname IS NOT NULL AND Vorname IS NOT NULL
AND (Nachname IN (SELECT Nachname FROM tblkunden GROUP BY Nachname, Vorname HAVING count(Nachname) > 1)
AND (Vorname IN (SELECT Vorname FROM tblkunden GROUP BY Vorname, Nachname HAVING count(Vorname) > 1)))
ORDER BY Nachname, Vorname;
Ich erhalte auch die doppelten Einträge, allerding sind gelegentlich auch einfach nur einmal vorhandene Einträge aufgeführt.
Hier mal das Result der Abfrage:

NACHNAME + VORNAME
-------------------
Mustermann + Klaus
Mustermann + Klaus
Musterberg + Bernd (falsch, gibt es nicht doppelt, wird aber angezeigt)
Musterfrau + Manfred
Musterfrau + Manfred
Muster + Klaus (falsch, gibt es nicht doppelt, wird aber angezeigt)


Ich vermute, dass ich einfach eine "Kinke" in meiner Abfrage habe und den Wald vor lauter Bäumen einfach nicht durchblicken kann.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 14:02
Probiers mal damit:
SQL-Code:
SELECT Nachname, Vorname, Count(Nachname) FROM tblkunden
GROUP BY Nachname, Vorname
HAVING Count(Nachname) > 1
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#3

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 14:06
Warum arbeitest du mit Subselects... Probiers doch einfach mal so:

select Nachname, Vorname, count(*) as N from tblkunden group by Nachname, Vorname having count(*) > 1 In deiner Abfrage ist sogar noch ein logischer Fehler drin, wenn ich das richtig sehe. Denn hast du 2 Wagener in deiner Tabelle, mit unterschiedlichen Vornamen (Marc und Toni), so kann dir deine Abfrage den Wagener trotzdem als doppelt liefern, und zwar dann, wenn noch irgendeine andere, dritte PErson, den Vornamen Marc oder Toni hat.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#4

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 14:08
Dann bekomme ich ja nur die Anzahl der doppelten Treffer, ich benötige aber eine vollständige Übersicht der doppelten Einträge (inkl. Straße, PLZ, Ort etc.), damit der Anwender entscheiden kann, welcher Datensatz der falsche ist!
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 14:19
Dann könntest du versuchen, über einen SELF JOIN die Informationen zu finden:

SQL-Code:
SELECT a.Nachname, a.Vorname, a.Ort, a.Strasse,
COUNT(b.Id) AS Anzahl
FROM tblkunden a
LEFT JOIN tblkunden b
ON a.Nachname=b.Nachname and a.Vorname=b.Vorname
GROUP BY a.Nachname, a.Vorname, a.Ort, a.Strasse
HAVING COUNT(b.Id)> 1
So in der Art.
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#6

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 15:57
Hm, jetzt wird es komisch... folgendes Phänomen mit dieser Abfrage...

SQL-Code:
SELECT a.Nachname, a.Vorname, a.Ort, a.Strasse
FROM tblkunden a
LEFT JOIN tblkunden b
ON a.Nachname=b.Nachname and a.Vorname=b.Vorname WHERE a.Nachname != 'AND a.Vorname != 'AND a.Nachname IS NOT NULL AND a.Vorname IS NOT NULL AND b.Nachname != 'AND b.Vorname != 'AND b.Nachname IS NOT NULL AND b.Vorname IS NOT NULL
GROUP BY a.Nachname, a.Vorname, a.Ort, a.Strasse
HAVING COUNT(a.Nachname) > 1
werden mir die Daten so angezeigt

NACHNAME - VORNAME
Mustermann - Klaus
Mustermann - Klaus
Muster - Frank
Musterfrau - Gerd
Musterfrau - Gerd

soweit, so gut... MUSTER FRANK wird mir nur einmal angezeit, befindet sich wie alle anderen Einträge aber auch doppelt in der Datenbank. MUSTERMANN KLAUS und MUSTERFRAU GERD sind doppelt drin und werden korrekt angezeigt... was nun, was geht da vor, was mache ich da falsch?
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#7

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 16:52
Also, damit nochmal klar wird, was ich möchte und wo mein Problem liegt...

Ich habe eine Kundendatenbank mit ca. 5000 Datensätzen und möchte mir in meiner Anwendung alle doppelten Datensätze anzeigen.
Ich will nicht die Anzahl der doppelten Datensätze wissen, sondern ich will die doppelten Datensätze komplett sehen, damit ich entscheiden kann, welcher Datensatz gelöscht werden kann. Das soll dann tabellarisch so aussehen...

NACHNAME - VORNAME
------------------
Mustermann - Tom
Mustermann - Tom
Musterfrau - Gerda
Musterfrau - Gerda

Wie muss ich dafür die SQL-Abfrage aufbauen? Wie wäre der Lösungsansatz am besten anzugehen?! Ich finde zur Zeit einfach nicht den richtigen Lösungsansatz!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 17:03
Versuch es mal so:
SQL-Code:
SELECT A.Name,A.Vorname
FROM tblkunden A
JOIN tblkunden B ON B.Name = A.Name AND B.Vorname = A.Vorname
GROUP BY A.Name,A.Vorname
HAVING COUNT (*) > 1
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
NetSonic

Registriert seit: 10. Mai 2007
124 Beiträge
 
Delphi 10 Seattle Professional
 
#9

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 17:06
Mit der Abfrage...

SQL-Code:
SELECT A.Nachname,A.Vorname
FROM tblkunden A
JOIN tblkunden B ON B.Nachname = A.Nachname AND B.Vorname = A.Vorname
GROUP BY A.Nachname,A.Vorname
HAVING COUNT(*) > 1
bekomme ich leider nur den doppelten Eintrag angezeigt, nicht beide bzw. alle doppelten, wie ich es benötige...
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: MySQL doppelte Datensätze anzeigen...

  Alt 20. Nov 2007, 17:10
Dann mußt du nun den Rest dazujoinen
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz