Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL doppelte Datensätze anzeigen... (https://www.delphipraxis.net/103705-mysql-doppelte-datensaetze-anzeigen.html)

DeddyH 20. Nov 2007 18:13

Re: MySQL doppelte Datensätze anzeigen...
 
Dann benutz die Abfrage doch als Subselect (nicht sehr schön, hat aber unter Firebird bei mir funktioniert).
SQL-Code:
SELECT Name,Vorname
FROM tblkunden
WHERE Name IN(
   SELECT A.Name
   FROM tblkunden A
   JOIN tblkunden B ON B.Name = A.Name AND B.Vorname = A.Vorname
   GROUP BY A.Name
   having COUNT (*) > 1)
AND Vorname IN(
   SELECT A.Vorname
   FROM tblkunden A
   JOIN tblkunden B ON B.Name = A.Name AND B.Vorname = A.Vorname
   GROUP BY A.Vorname
   having COUNT (*) > 1)

shmia 20. Nov 2007 18:14

Re: MySQL doppelte Datensätze anzeigen...
 
ich weiss nicht, ob MySQL folgende Abfrage noch verkaftet, aber so könnte es gehen:
SQL-Code:
SELECT tblkunden.*
FROM
tblkunden INNER JOIN (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) DevTbl
ON tblkunden.Vorname=DevTbl.Vorname AND tblkunden.Nachname=DevTbl.Nachname
ORDER BY tblkunden.Nachname

omata 20. Nov 2007 19:55

Re: MySQL doppelte Datensätze anzeigen...
 
Hallo NetSonic,

vielleicht so...

SQL-Code:
SELECT * 
FROM tblkunden x
WHERE COALESCE(nachname, '') <> ''
  AND COALESCE(vorname, '') <> ''
  AND EXISTS (SELECT nachname, vorname
              FROM tblkunden
              WHERE nachname = x.nachname
                AND vorname = x.vorname
              GROUP BY nachname, vorname
              HAVING COUNT(*) > 1)
ORDER BY nachname, vorname
Gruss
Thorsten

NetSonic 21. Nov 2007 09:15

Re: MySQL doppelte Datensätze anzeigen...
 
Hey shmia, leider legt mein MySQL-Server bei der Abfrage eine lange, lange Pause ein... aber die SQL-Abfrage von omata macht genau das, was ich wollte. :thumb:
Jetzt bekomme ich alle doppelten / mehrfach vorhandenen Datensätze angezeigt, und der Anwender kann entscheiden, welcher Eintrag entfernt werden soll / muss!

Danke an alle, die sich mit meinem Problem befasst haben! :dp:

Gonso 23. Dez 2007 15:39

Re: MySQL doppelte Datensätze anzeigen...
 
@omata

kann man deine abfrage so verändern, dass ich nur doppelte datensätze bekomme aber nur einzeln.
deine abfrage zeigt mir in meiner tabelle 20 doppelte datensätze (10 * 2 datensätze.
Ich möchte nur 10 sehen, die zwar doppelt sind aber nicht doppelt angezeigt werden sollen.

als doppelt gilt: gleiche nachname und vorname.

Ich sollte aber alle felder in einem datensatz sehen (auch z.b. adresse, plz und noch viel mehr ca. 30 felder)

DeddyH 23. Dez 2007 16:14

Re: MySQL doppelte Datensätze anzeigen...
 
In Anlehnung an meinen Beitrag #8:
SQL-Code:
SELECT A.Name,A.Vorname,A.bla,A.blubb,A...
FROM tblkunden A
JOIN tblkunden B ON B.Name = A.Name AND B.Vorname = A.Vorname
GROUP BY A.Name,A.Vorname,A.bla,A.blubb,A...
HAVING COUNT (*) > 1

Gonso 23. Dez 2007 18:55

Re: MySQL doppelte Datensätze anzeigen...
 
@DeddyH : danke (ist [leider] nur die halbe antwort)

man muss bei DeddyH alle felder angeben. ich wollte nur nachname und vorname angeben und alle andere felder nicht. ich habe 20 tabellen erstellt mit sehr vielen feldern und die angabe von allen felder ist sehr mühsam und keine allgemeine lösung.

kann mir jemand helfen?

DeddyH 23. Dez 2007 19:20

Re: MySQL doppelte Datensätze anzeigen...
 
Entschuldige, aber Du hast ein suboptimales DB-Design kreiert und jetzt ist Dir die Angabe der zu ermittelnden Felder zuviel Arbeit?

Gonso 23. Dez 2007 19:30

Re: MySQL doppelte Datensätze anzeigen...
 
ich habe nicht geschrieben, dass ich zu faul bin sondern, dass deine lösung (die ich auch vorher kannte) keine allgemeine lösung ist.

bei der abfrage von experte omata bruacht man auch nicht alle felder einzugeben (nur die index felder). ich suche eine allgemein lösung und keine diskusion über [suboptimales DB-Design].

DeddyH 23. Dez 2007 19:33

Re: MySQL doppelte Datensätze anzeigen...
 
Das liegt daran, dass er in der äußeren Abfrage den Stern benutzen kann. Leider geht AFAIK DISTINCT(*) nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz