Autor |
Beitrag |
derDoc
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Mo 07.04.03 07:32
Kann mir jemand sagen, wie ich es schaffe, mir nur die doppelten Einträge in meiner Datenbank anzeigen zu lassen?
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Mo 07.04.03 08:11
Hi,
also erstmal was grundsätzliches, es sollte nie vorkommen dass in einer Tabelle doppelte einträge vorhanden sind. Ich bin jetzt mal davon ausgegangen du meinst doppelte einträge in der selben tabelle.
Hab dir mal nen kurzen SQL gebastelt mit dem es gehen müsste!
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| SELECT * FROM TABLE1 T1, (SELECT COUNT(*) AS ANZAHL FROM SELBETABELLEWIE1 GROUP BY FELD1, FELD2, FELD3, FELD4, .... ) T2 WHERE T2.ANZAHL = 2 AND T1.FELD1 = T2.FELD1 AND T1.FELD2 = T2.FELD2 AND T1.FELD3 = T2.FELD3 AND T1.FELD4 = T2.FELD4 AND T1.FELD5 = T2.FELD5 ... |
In diesem Fall wird der fall der doppelt ist aber auch doppelt ausgegeben. Wenn du dies verhindern willst solltest du hinten noch eine Group By anweisung dranhängen!
Wenn du fragen hast einfach melden!!!
Gruß andi
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
derDoc 
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Mo 07.04.03 10:53
Danke Andi.
Ich benötige das, um eine Adresstabelle auf doppelte Einträge zu prüfen, die dort nunmal vorkommen können.
Was meinst du mit noch einer GROUP BY Anweisung?
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
Andi1982
      
Beiträge: 497
WinXP HE
D6 Enterprise
|
Verfasst: Mo 07.04.03 12:11
Hi,
also ich hab das mal ausprobiert, wenn eine Datenbank richtig angelegt ist, also indexfelder richtig vergeben usw. dann wirst du es kaum schaffen doppelte datensaetze zu erzeugen.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| SELECT * FROM TABLE1 T1, (SELECT COUNT(*) AS ANZAHL FROM SELBETABELLEWIE1 GROUP BY FELD1, FELD2, FELD3, FELD4, .... ) T2 WHERE T2.ANZAHL = 2 AND T1.FELD1 = T2.FELD1 AND T1.FELD2 = T2.FELD2 AND T1.FELD3 = T2.FELD3 AND T1.FELD4 = T2.FELD4 AND T1.FELD5 = T2.FELD5 ... |
Mit diesem SQL bekommst du jede zeile immer doppelt zurueck.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| SELECT * FROM TABLE1 T1, (SELECT COUNT(*) AS ANZAHL FROM SELBETABELLEWIE1 GROUP BY FELD1, FELD2, FELD3, FELD4, .... ) T2 WHERE T2.ANZAHL = 2 AND T1.FELD1 = T2.FELD1 AND T1.FELD2 = T2.FELD2 AND T1.FELD3 = T2.FELD3 AND T1.FELD4 = T2.FELD4 AND T1.FELD5 = T2.FELD5 ... GROUP BY FELD1, FELD2, FELD3, FELD4, .... |
Hier bekommst du aber nur eine Ergebniszeile zurueck. Hat aber den nachteil dass du nicht erkennst wie oft es nur wirklich vorhanden ist. du koenntest es hoechstens noch so machen
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| SELECT *, T2.Anzahl FROM TABLE1 T1, (SELECT COUNT(*) AS ANZAHL FROM SELBETABELLEWIE1 GROUP BY FELD1, FELD2, FELD3, FELD4, .... ) T2 WHERE T2.ANZAHL > 2 AND T1.FELD1 = T2.FELD1 AND T1.FELD2 = T2.FELD2 AND T1.FELD3 = T2.FELD3 AND T1.FELD4 = T2.FELD4 AND T1.FELD5 = T2.FELD5 ... GROUP BY FELD1, FELD2, FELD3, FELD4, .... |
So bekommst du nur eine Zeile zurueck und ausserdem noch wie oft der Satz in der Datenbank vorkommt!
Gruß andi
_________________ Solange die Bombe tickt ist alles in Ordnung, erst wenn sie damit aufhört wird es problematisch...
|
|
derDoc 
      
Beiträge: 623
Win Vista Prof
D2007 Prof
|
Verfasst: Mo 07.04.03 14:22
Nochmal danke Andi, ich werde das mal testen.
_________________ MfG derDoc
There are only 10 types of people: those who understand binary and those who don't.
|
|
Luncustaf
      
Beiträge: 324
Win 2k
D7 Ent.
|
Verfasst: Mo 07.04.03 18:09
nach einem GROUP BY solltest du anstatt WHERE nen HAVING verwenden
gr€€tz
|
|
Cashels
      
Beiträge: 167
|
Verfasst: Di 08.04.03 18:26
Oder mit einer ganz gewagten Abfrage: Quelltext 1: 2: 3:
| select distinct t1.Feld1, t1.Feld2 from Tabelle1 t1, Tabelle2 t2 where t1.Feld1=t2.Feld1 and t1.Feld2=t2.Feld2 and t1.ID <> t2.ID |
Dabei geh ich davon aus, daß die Tabelle einen Primäindex ID hat. Die Abfrage liefert nur die Datensätze für welche Feld1 und Feld2 übereinstimmen.
Gruß,
Tom
|
|
|