Autor Beitrag
derDoc
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: 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!

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 497

WinXP HE
D6 Enterprise
BeitragVerfasst: 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.

ausblenden 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.

ausblenden 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

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 623

Win Vista Prof
D2007 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 324

Win 2k
D7 Ent.
BeitragVerfasst: Mo 07.04.03 18:09 
nach einem GROUP BY solltest du anstatt WHERE nen HAVING verwenden


gr€€tz
Cashels
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Di 08.04.03 18:26 
Oder mit einer ganz gewagten Abfrage:
ausblenden 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