ERLEDIGT
NEIN
NEIN
ANTWORTEN
8
8
ZUGRIFFE
1003
1003
EMPFEHLEN
-
22.10.08 10:03 #1
- Registriert seit
- Jun 2005
- Beiträge
- 24
Hallo zusammen,
ich arbeite mit Oracle 10.
Ich habe ein Tabelle mit ca. 20 Spalten.
Meine Abfrage bisher :
Code :1 2 3 4
SELECT count(*),iso,name1,name2,nr1,nr2,nr3 from tabelle GROUP BY iso,name1,name2,nr1,nr2,nr3 HAVING COUNT(*) > 1
Diese Abfrage zeigt mir alle doppelten Datensätze in meiner Tabelle an.
Code :1 2 3 4 5
count(*),iso,name1,name2,nr1,nr2,nr3 2 439 nameX nameL 3 260 nameG nameW 7 439 nameR nameT 4 447 nameT nameO
Soweit so gut.
Ich möchte aber alle Datensätze angezeigt bekommen. Das heisst die erste Zeile mit den 2 doppelten soll auch doppelt in der Ergebnismenge erscheinen.
Zusätzlich sollen auch alle andere Spalten die in der Tabelle vorkommen name3,name4 etc. angezeigt werden.
Wie könnte man das ganze verknüpfen ? Über die rowid z.b. geht ja leider nicht.
-
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
SELECT (select count(*) ,iso ,name1 ,name2 ,nr1 ,nr2 ,nr3 from tabelle GROUP BY iso,name1,name2,nr1,nr2,nr3 HAVING COUNT(*) > 1) cnt ,iso ,name1 ,name2 ,nr1 ,nr2 ,nr3 from tabelle where (select count(*) ,iso ,name1 ,name2 ,nr1 ,nr2 ,nr3 from tabelle GROUP BY iso,name1,name2,nr1,nr2,nr3 HAVING COUNT(*) > 1) >1
Per Subselect?
greez
-
23.10.08 08:12 #3
- Registriert seit
- Jun 2005
- Beiträge
- 24
Die Idee ist schonmal gut. Leider funktioniert dein Statement nicht. "Too many values"
Und diese Abfrage berücksicht "nur" das alle doppelten Datensätze ausgegeben werden.
Ich möchte aber noch weitere Spalten in der Tabelle mit ausgeben. zusatz3 zusatz4 usw.
So sollte das Ergebnis aussehen :
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
iso,name1,name2,nr1,nr2,nr3,zusatz3,zusatz4 439 nameX nameL z01 z31 439 nameX nameL z02 z30 260 nameG nameW z01 z30 260 nameG nameW z02 z22 260 nameG nameW z50 z35 439 nameR nameT z01 z31 439 nameR nameT z02 z32 439 nameR nameT z22 z33 439 nameR nameT z12 z34 439 nameR nameT zdaten z35 439 nameR nameT zinhalt z36 439 nameR nameT z7 z37 447 nameT nameO z89 z38 447 nameT nameO hu z39 447 nameT nameO ko z40 447 nameT nameO ok z29
Geändert von TutorialKing (23.10.08 um 08:20 Uhr)
-
dann lass im subselect die gruppierung weg und nur den count stehen, zusätzlich join deine tabelle gegen den subselect eins zu eins
greez
-
24.10.08 08:14 #5
- Registriert seit
- Jun 2005
- Beiträge
- 24
Könntest du mir dazu bitte ein Beispiel postendann lass im subselect die gruppierung weg und nur den count stehen, zusätzlich join deine tabelle gegen den subselect eins zu eins
-
oder hilft dir evtl ein trivialer select *? Du verwirrst mich gerade.Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
SELECT t1.iso , t1.name1 , t1.name2 , t1.nr1 , t1.nr2 , t1.nr3 , sub.cnt from tabelle t1 , (select count(*) cnt ,iso ,name1 ,name2 from tabelle GROUP BY iso,name1,name2,nr1,nr2,nr3) sub where t1.iso = sub.iso and t1.name1 = sub.name1 and t1.name2 = sub.name2 and sub.cnt > 1;
greez
-
28.10.08 12:02 #7
- Registriert seit
- Jun 2005
- Beiträge
- 24
Danke das hat schon genügt. Es hat funktioniert
-
Ich muss das Thema leider nochmal aufleben lassen da ich vor dem gleichen Problem stehe aber auch mit diesem (bis jetzt definitiv Hilfreichstem Thread) nicht wirklich weiter komme... Ich arbeite ebenfalls mit Oracle 10.
Also hier mal mein SQL Select:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
SELECT t1.ID, t1.FremdID, t1.AccountID, t1.Wert1, t1.Wert2, t1.Wert3, t1.Wert4, t1.Wert5, t1.Wert6, t1.Wert7, t1.Wert8, t1.Wert9, sub.cnt1, sub.cnt2, sub.cnt3, sub.cnt4, sub.cnt5, sub.cnt6, sub.cnt7, sub.cnt8, sub.cnt9, sub.cnt10 FROM tabelle t1 , (SELECT COUNT(AccountID) cnt1, COUNT(Wert1) cnt2, COUNT(Wert2) cnt3, COUNT(Wert3) cnt4, COUNT(Wert4) cnt5, COUNT(Wert5) cnt6, COUNT(Wert6) cnt7, COUNT(Wert7) cnt8, COUNT(Wert8) cnt9, COUNT(Wert9) cnt10 FROM tabelle GROUP BY AccountID, Wert1, Wert2, Wert3, Wert4, Wert5, Wert6, Wert7, Wert8, Wert9) sub WHERE t1.AccountID = sub.AccountID AND t1.Wert1 = sub.Wert1 AND t1.Wert2 = sub.Wert2 AND t1.Wert3 = sub.Wert3 AND t1.Wert4 = sub.Wert4 AND t1.Wert5 = sub.Wert5 AND t1.Wert6 = sub.Wert6 AND t1.Wert7 = sub.Wert7 AND t1.Wert8 = sub.Wert8 AND t1.Wert9 = sub.Wert9 AND sub.cnt1 > 1 AND sub.cnt2 > 1 AND sub.cnt3 > 1 AND sub.cnt4 > 1 AND sub.cnt5 > 1 AND sub.cnt6 > 1 AND sub.cnt7 > 1 AND sub.cnt8 > 1 AND sub.cnt9 > 1 AND sub.cnt10 > 1;
So mein Problem ist wie folgt das ich manche Einträge doppelt habe, bis auf gewisse Felder die aufgrund von Autoincrement usw absolut Unique sind. Z.B. die Felder ID und FremdID. Darum dürfen die eben nicht in der GroupBy auftauchen da er sonst sagt es gab keine doppelten... Warum auch immer.
Das obige Beispiel ist das was ich aus dem gebastelt habe was ich hier gefunden habe, leider sagt er mir da folgenden fehler:
"SUB"."WERT9": invalid identifier
Vielleicht kannt mir ja jemand von euch helfen wie ich es hinkriege...
Eine Ausgabe derer die Doppelt sind hab ich bereits hingekriegt, jedoch eben Gruppiert, ich bräuchte eine in der die ID und FremdID mit drin stehen damit ich genau weiss welcher Datensatz wirklich doppelt ist.
Hier mal ein beispiel der Tabelle:
Code :1 2 3 4 5 6
ID FremdID AcountID Wert1 Wert2 Wert3 Wert4 Wert5 etc 1 100 2201 2000 YES 77 22 1 2 100 2201 2000 YES 77 22 1 3 200 2201 2000 YES 77 22 1 4 100 1507 2000 NO 77 22 2 5 150 2201 2000 YES 77 22 2
Hier sollte er mir jetzt wenn es möglich ist einmal die spalte mit der ID 1 und einmal die mit der ID 2 und einmal die mit der ID 3 ausgeben da diese 3 absolut Identisch sind bis auf die ID und FremdID, welche ich zwar unbedingt brauche um zu wissen welche Einträge nun doppelt sind, aber im Count und GroupBy nicht auftauchen dürfen.
Ich danke schonmal für die mühe und hoffe hier kann mir jemand weiterhelfen...Geändert von Jusage (27.07.11 um 08:57 Uhr)
-
Hat niemand hier nen hilfreichen Ansatz was genau ich falsch mache?
Ähnliche Themen
-
Nur bestimmte Spalten im Silverlight-Datagrid anzeigen
Von orion555 im Forum .NET WPF & SilverlightAntworten: 1Letzter Beitrag: 05.09.10, 22:52 -
Doppelte Spalten filtern
Von trench140 im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 14.06.08, 13:17 -
Wie vermeide ich Doppelte Spalten?
Von dsolianyi im Forum Relationale DatenbanksystemeAntworten: 5Letzter Beitrag: 06.05.07, 21:20 -
Bestimmte Spalten zählen, aber wie?
Von KenKo im Forum PHPAntworten: 2Letzter Beitrag: 30.09.05, 09:36 -
Abfrage doppelte Datensätze unter EInbezug mehrer Spalten
Von mstrauss im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 25.02.05, 10:03





Zitieren
Login





