Nur ersten Datensatz eines JOIN

Themen rund um den praktischen Einsatz von Firebird. Fragen zu SQL, Performance, Datenbankstrukturen, etc.

Moderator: thorben.braun

Antworten
Groffy
Beiträge: 78
Registriert: Do 12. Apr 2018, 23:14

Hallo,

ich habe folgendes Szenario :

Tabelle AUFTRAG:

Code: Alles auswählen

BIGINT ID
TIMESTAMP DATE
Tabelle INFORMATIONEN:

Code: Alles auswählen

BIGINT ID
BIGINT AUFTRAG_ID
VARCHAR(64) INFOTEXT

Ich möchte alle Aufträge haben zu denen eine bestimmte Information hinterlegt ist, allerdings gibt es Fälle, bei denen zu einem Auftrag die Information mehrfach hinterlegt ist, weshalb im Ergebnis bestimmte Aufträge mehrfach enthalten sind. Ich brauche aber jede Auftrags ID nur einmal. Mein Abfrage:

Code: Alles auswählen

select ID, DATE,
(select List(INFOTEXT, '|') from INFORMATIONEN where I.AUFTRAG_ID=A.ID) as INFO
from AUFTRAG A
join INFORMATIONEN I on (I.AUFTRAG_ID=A.ID)
where I.INFOTEXT containing :FILTERTEXT
order by A.DATE
Ich hatte Beispiele gefunden in denen im JOIN eine Art von Subselect enthalten war, aber ich bekomme es nicht hin.

https://stackoverflow.com/questions/204 ... -first-row

Wenn ich den etwas ungewöhnlichen subselect(select List()) für die Infofelder weglasse, kann ich es mit einem DISTINCT lösen...

Beste Grüße - Ulrich
bfuerchau
Beiträge: 485
Registriert: Mo 7. Mai 2018, 18:09
Kontaktdaten:

Left Join (
select first 1 .....
from ...
where ...

) hogo on 1=1
Antworten