PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DISTINCT ON simulieren?



Trillian
13-10-2003, 11:47
Hi,
ich habe z.Z. folgendes Problem: ich möchte doppelte Datensätze in einem Query ignorieren, allerdings nur solche, wo ein bestimmtes Feld doppelt auftritt.

Zur Verdeutlichung, die Tabelle sieht so aus:



Serial Update Foo
----------------------------
....
100 0 Bar
100 1 Baz
....


Ich möchte, dass der Datensatz mit Serial 100 nur einmal aufgelistet wird.

DISTINCT kann ich nicht nehmen, da sich die Werte im Feld "Foo" unterscheiden.

Durch ein bisschen Googeln habe ich rausgefunden, dass PostgreSQL wohl sowas unterstützt, da kann man sagen "DISTINCT ON Serial" (=> nur die Daten im Feld Serial müssen sich unterscheiden).

Wie kann ich dieses Verhalten mit Standard SQL erhalten?

Ich benutze hier MS ADO 2.6; die Daten kommen aus Access.

Danke schonmal :)

quinte17
13-10-2003, 14:52
versuch doch mal mit group by?

aber da musst du dann die andern 2 felder rauslassen... die bringen dir ja dann eh nichts mehr..


also: select serial from tabelle group by serial

Trillian
13-10-2003, 15:47
Original geschrieben von quinte17
versuch doch mal mit group by?

aber da musst du dann die andern 2 felder rauslassen... die bringen dir ja dann eh nichts mehr..


Nein, die darf ich nicht weglassen, ich brauche die Infos.
Ich möchte nur nicht, dass alle beide (Beispiel) Datensätzen angezeigt werden, wo Serial = 100 ist, sondern eben immer nur einer. Nichtsdestotrotz muss ich wissen, wie Foo und Update dabei aussehen.

Mit Group By habe ich bisher noch nix gemacht, werd ich mir mal angucken.

Christoph
13-10-2003, 15:49
Müsste mit GROOUP BY, HAVING (count(...) > 2) und mehreren verschachtelten Subselects gehen. Bräuchte ich jetzt aber schätzungsweise mindestens eine halbe Stunde bis ich's
hingefummelt habe, was die Schmerzgrenze des kostenlosen Supports überschreitet.

Ist aber eine lehrreiche und empfehelenswerte Übung.

elrond
15-10-2003, 14:31
select serial, max(update),foo from table group by serial,foo

falls fdas nicht reicht,sag doch einfach mal wie der output aussehen soll.