Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

"Fetch first" oder so bei left join

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von derhenry, 7 Februar 2017.

  1. derhenry

    derhenry Aktiver Benutzer

    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
     
  2. ukulele

    ukulele Datenbank-Guru

    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.
     
  3. derhenry

    derhenry Aktiver Benutzer

    Das ist spitze. Vielen Dank!
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden