"Fetch first" oder so bei left join

derhenry

Fleissiger Benutzer
Beiträge
54
Moin zusammen,

ich binde an meine Faktentabelle (A) eine andere Tabelle (B) mit left join an. Dummerweise habe ich keine 1:1-Beziehung, sondern in B mehrere Einträge zu einer Zeile in A. Diese unterscheiden sich durch eine Versionsnummer (in einer Stichprobe von 1 bis 13), nicht jedoch in dem mich interssierenden Wert (Postleitzahl). Ich habe also 13 Zeilen zu einer Entsprechung, die Spalte Postleitzahl ist jedoch immer gleich und nur die Spalte Version unterschiedlich.
Wie kann ich nun, um keine Vervielfachung meiner Ausgabe der Tabelle A zu bekommen, sagen, dass mir egal ist, aus welchen der 13 Werte die Postleitzahl gezogen wird oder (alternativ) den Wert der höchsten Version nehemn, der dann aber für jeden Satz in A eine andere Nummer hat?

Vielleicht versteht ja jemand das Problem. :)
Über Hinweise bin ich dankbar!
Grüße
derhenry
 
Werbung:
Verschiedene Möglichkeiten, z.B.:
Code:
SELECT   A.*,
     B2.Postleitzahl
FROM   A
LEFT JOIN (

SELECT   fk_A,
     max(Versionsnummer) AS Versionsnummer
FROM   B
GROUP BY fk_A

     ) B1
ON     A.pk = B1.fk_A
LEFT JOIN B B2
ON     A.pk = B2.fk_A
AND     B1.Versionsnummer = B2.Versionsnummer
Es gibt elegantere Wege aber das sollte immer gehen und man muss nicht viele Spalten gruppieren.
 
Werbung:
Zurück
Oben