Crazy_Bug Geschrieben 29. Juni 2006 Geschrieben 29. Juni 2006 Hallo, ich will ein paar Daten aus einer Datenbank haben. In der Datenbank sind aber einige Datensätze doppelt drin und unterscheiden sich jeweils nur in ein oder zwei spalten. Mit distinct werden die Spalten anscheinend ja nur gefiltert, wenn alle spalten eines datensatzes gleich sind. Wie krieg ich es aber hin, dass die datensätze auch gefiltert werden, wenn nicht alle spaten gleich sind, sondern nur eine bestimmte? danke im vorraus greetz chris
Amstelchen Geschrieben 29. Juni 2006 Geschrieben 29. Juni 2006 ich will ein paar Daten aus einer Datenbank haben. oracle, mysql, mssql, db2, postgres, informix, progress, ...? In der Datenbank sind aber einige Datensätze doppelt drin und unterscheiden sich jeweils nur in ein oder zwei spalten. Mit distinct werden die Spalten anscheinend ja nur gefiltert, wenn alle spalten eines datensatzes gleich sind. dem ist - laut SQL-norm genau so, ja. Wie krieg ich es aber hin, dass die datensätze auch gefiltert werden, wenn nicht alle spaten gleich sind, sondern nur eine bestimmte? indem du auf die gewünschten, zusammenzufassenden spalten das GROUP BY aggregat anwendest. s'Amstel
Crazy_Bug Geschrieben 29. Juni 2006 Autor Geschrieben 29. Juni 2006 um ehrlich zu sein, bin ich mir nicht ganz sicher, was es für eine db is, aber ich meine es is informix. mit group by hab ichs schon probiert, aber da bekomm ich immer die meldung, dass eine bestimmte zeile in der group-by-klausel stehen muss. wenn ich sie dazuschreibe, dann will er die nächste und dann immer so weiter, bis ich alle spalten in der group-by-klausel habe...
grueni Geschrieben 29. Juni 2006 Geschrieben 29. Juni 2006 Poste doch einfach mal deinen SQL-String, so wie er jetzt ist.
Crazy_Bug Geschrieben 29. Juni 2006 Autor Geschrieben 29. Juni 2006 gute idee, hätt ich auch drauf kommen können "select distinct * from tabelle1 v inner join tabelle2 r ON v.fabriknr = r.fabriknr where v.behoerde like 'behoerde' and r.sysname like 'ST______' order by sysname;" Wenn ich das so mache dann gibter mir halt nur auch das doppelte aus. Dann hab ichs mit group by versucht: "select distinct * from tabelle1 v inner join tabelle2 r ON v.fabriknr = r.fabriknr where v.behoerde like 'behoerde' and r.sysname like 'ST______' group by sysname;" Dann gibt er mir folgenden Fehler zurück: "The column (fabriknr) must be in the GROUP BY list." Es ist überigens eine Informix-Datenbank.
grueni Geschrieben 29. Juni 2006 Geschrieben 29. Juni 2006 Brauchst du alle Felder der beiden Tabellen? Ich würde nur die Felder selektieren, die wirklich benötigt werden. Informix verlangt nämlich (im Gegensatz zu MySql ), daß alle selektierten Felder auch im GROUP BY auftauchen.
Crazy_Bug Geschrieben 30. Juni 2006 Autor Geschrieben 30. Juni 2006 ok...meine abfrage ist jetzt: " "select distinct r.sysname,v.sachbearbeiter,r.lieferdatum,r.fabriknr from tabelle1 v inner join tabelle2 r ON v.fabriknr = r.fabriknr where v.behoerde like 'behoerde' and r.sysname like 'ST______' group by r.sysname,v.sachbearbeiter,r.lieferdatum,r.fabriknr;" nen fehler gibter jetzt nichtmehr zurück, aber funktionieren tut es auch net^^ hab ich was falsch gemacht?
Joe Kinley Geschrieben 30. Juni 2006 Geschrieben 30. Juni 2006 Warum schreibst du staendig "r.fabriknr r" ? Ist das absicht ?
Crazy_Bug Geschrieben 30. Juni 2006 Autor Geschrieben 30. Juni 2006 hups, ne war keine absicht, steht in meiner abfrage aber auch net drin
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden