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

Join zweier Tabellen trotz doppelter Sätze

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von derhenry, 24 März 2015.

  1. derhenry

    derhenry Aktiver Benutzer

    Hallo zusammen,

    ich wäre Euch dankbar, wenn Ihr mir bei einem kleinen SQL-Problem helfen könntet:
    In Tabelle A habe ich Daten, die ich um Informationen aus Tabelle B ergänzen möchte. In Tabelle B jedoch gibt es keinen eindeutigen Primärschlüssel und die Kombination aus möglichen Verknüpfungskriterien ist auch nicht eindeutig. Nehme ich - wie sonst immer - den left join, erhöhe ich die Gesamtdatensatzanzahl meines Ergebnisses, dabei soll die Menge von Tabelle A nicht überschritten werden.
    Wie kann ich mir hier behelfen? Tabelle B kann ich nicht direkt bereinigen (höchstens durch einen View hirauf). Wahrscheinlich sind die doppelten Datensätze in B komplett identisch. Ist dem aber nicht so, soll einfach einer der beiden Sätze genommen werden - neher komme ich nicht an ein richtiges Ergebnis.

    Danke für Eure Tipps!
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Du kannst einen Join auf das Resultat einer Abfrage machen, die dir eindeutige Werte aus B liefert. Dazu kannst Du z.B. Aggregationen verwenden, also max() oder so. Das ganze sieht dann etwa so aus:

    select ... from a left join (select ... from b ...) foo on a.id=foo.id


    Langfristig wäre es besser, das alles sauber zu bereinigen. Referentielle Integrität ist was feines - nutze es!
     
  3. derhenry

    derhenry Aktiver Benutzer

    Vielen Dank für die Antwort. Das ist eine gute Idee. Dann werde ich um b herum erst einmal einen View bauen, der auf einen Datensatz pro Schlüssel reduziert. Kann ich da max() auch für Strings nehmen? Left join ist dann aber doch das Mittel der Wahl, wenn es mehr a's als b's gibt, oder? Wenn es kein b zu einem a gibt, sollen die entsprechenden Spalten <null> sein.
     
  4. akretschmer

    akretschmer Datenbank-Guru

    Ja.
     
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