SQL Abfrage
ccc
- datenbank
0 Vinzenz Mai0 Ilja
Hallo,
ich möchte eine Abfrage von meiner Datenbank abfragen, aber ich steh' total auf dem Schlauch wie ich Das schreiben soll. Hier mal meine Datenbanken und das gewünschte Ergebnis:
Tabelle1
id | name | sex | plz
1 | otto | m | 01234
2 | anne | f | 45678
3 | ben | m | 91011
Tabelle2
id | plz | ort
1 | 01234 | musterhausen
2 | 01234 | beispielort
3 | 45678 | exampleburg
Ergebnis
name | sex | plz | ort
otto | m | 01234 | musterhausen
ben | m | 91011 | NULL
in die Abfrage soll berücksichtigt werden:
Ich danke.
Hallo
ich möchte eine Abfrage von meiner Datenbank abfragen, aber ich steh' total auf dem Schlauch wie ich Das schreiben soll. Hier mal meine Datenbanken und das gewünschte Ergebnis:
Das ist nur eine Datenbank mit zwei Tabellen :-)
Tabelle2
id | plz | ort
1 | 01234 | musterhausen
2 | 01234 | beispielort
3 | 45678 | exampleburg
Aha, ein Ort ist also durch seine id genau bestimmt und nicht durch seine PLZ
Tabelle1
id | name | sex | plz
1 | otto | m | 01234
2 | anne | f | 45678
3 | ben | m | 91011
infolgedessen ist diese Tabelle fehlerhaft. Statt plz müsstest Du eine Spalte haben, in der die id des Ortes aufgeführt ist.
Ergebnis
name | sex | plz | ort
otto | m | 01234 | musterhausen
ben | m | 91011 | NULL
in die Abfrage soll berücksichtigt werden:
- ein Kriterium für die Tabelle 1 (sex = m)
- ein Kriterium für die Tabelle 2 (ort like 'm%')
- eine Übereinstimmung der Tabellen (in dem fall die plz)
- es sollen auf jeden fall alle "m" ausgegeben werden
Dieses Ergebnis wäre dann ein einfacher LEFT JOIN (Tabelle1, Tabelle2), siehe </archiv/2005/11/t119395/#m766062>, Rouvens geplanter Feature-Artikel zu Joins.
Freundliche Grüße
Vinzenz
yo,
den fehler, wie die beiden tabellen miteinander verknüpft sind, den hat dir Vinzenz schon gesagt. aber ich will noch mal auf die query eingehen, weil es einen fallstrick mit dem OUTER JOIN gibt. und zwar müssen alle bedingungen der zweiten tabelle mit in die JOIN bedingung.
SELECT tab1.name, tab1.sex, tab1.plz tab2.ort
FROM tab1
LEFT JOIN tab2 ON (tab1.plz = tab2.plz AND ort LIKE 'm%')
WHERE tab1.sex = 'm'
Ilja