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
Tabelle 2
(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:
Der Wert mit der id 2 fehlt leider bei meinem falschen Ansatz.
Wie muss die SQL-Abfrage richtig heißen, dass mein gewünschtes Verhalten erzielt wird?
Viele Grüße
Hotte
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 |... .....
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 ................
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

Kommentar