Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fragen zu einem LEFT JOIN

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Fragen zu einem LEFT JOIN

    Hi!

    Vornweg: Ich weiß, dass dieses Datenbankdesign nicht gut ist. Ich kann leider nichts machen, da eine große Anwendung auf diesem suboptimalen Design aufbaut und ich auf keinen Fall etwas verändern kann / darf.

    Jedenfalls muss ich aus dieser Datenbank etwas auslesen.


    Ich würde gerne per SQL-Abfrage alle Daten aus Tabelle 1 haben. Diese soll verbunden werden mit Tabelle 2, von der ich auch die Daten brauche.
    Von Tabelle 2 möchte ich aber nur die Werte, welche marke = "A" haben. (marke="B" und marke="C" interessieren mich nicht)

    Dummerweise gibt es nicht zu jedem Eintrag in Tabelle 1 einen Eintrag in Tabelle 2.
    Wie mache ich das jetzt per SQL Statement?



    Tabelle 1
    Code:
    id   | name     | ...
    1    | Müller   | ...
    2    | Maier    | ...
    3    | Schmidt  | ...
    4    | Test     | ...

    Tabelle 2
    Code:
    id    | marke | Wert | ...
    1     | A   |xy    |...
    1     | B   |xy    |...
    1     | C   |xy    |...
    3     | A   |xy    |...
    3     | B   |xy    |...
    3     | C   |xy    |...
    4     | A   |xy    |...
    4     | B   |xy    |...
    4     | C   |xy    |...
    .....
    (id = 2 gibt es hier nicht)

    Mein Ansatz: (Vereinfacht, ich nutze in der Anwendung natürlich nicht den *)
    SELECT *
    FROM tabelle1 LEFT JOIN tabelle2 ON tabelle1.id = tabelle2.id
    WHERE tabelle2.marke = "A"

    Im vereinfachten Beispiel oben möchte ich die folgenden Zeilen als Ergebnis erhalten:
    Code:
    id   | name    | wert
    1    | Müller  | xy
    2    | Maier   | NULL bzw leer
    3    | Schmidt | xy
    4    | Test    | xy
    ................
    Der Wert mit der id 2 fehlt leider bei meinem falschen Ansatz.
    Code:
    id   | name    | wert
    1    | Müller  | xy
    3    | Schmidt | xy
    4    | Test    | xy

    Wie muss die SQL-Abfrage richtig heißen, dass mein gewünschtes Verhalten erzielt wird?


    Viele Grüße
    Hotte

  • #2
    Mach aus deinem LEFT JOIN einen RIGHT JOIN

    Oder:
    Frag zu erst deine Tabelle 2 ab und joine dann Tabelle 1 mit LEFT JOIN :P

    Kommentar


    • #3
      Das was zurzeit in der WHERE Klausel steht muss in die ON Klausel.

      Kommentar


      • #4
        Perfekt! Danke!

        Kommentar

        Lädt...
        X