• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

MySQL Selektion über 2 Tabellen

bermany

New member
Hallo Foren-Gemeinde,

ich habe ein MySQL-Problem:

Ziel ist eine kleine Projektverwaltung, die 1:n mit einer Anschrift verknüpft sein soll.
Daher gibt es die Tabellen project und address.

Tabelle project:
id -> INT(11) PRIMARY auto_increment
address -> INT(11) -> Verknüpfung zur Adresse
title -> varchar(250)
status -> VARCHAR(30)

Tabelle adrdress:
id -> INT(11) PRIMARY auto_increment
matchcode -> VARCHAR(250)


Zum Problem: Ich suche alle offenen Projekte und die Adresse dazu:
Code:
SELECT t1.title, t2.matchcode FROM project AS t1, address AS t2 WHERE t1.status="offen" AND t1.address=t2.id;

Damit finde ich alle Projekte, denen eine Adresse zugeordnet wurde. Manchen Projekten wurde aber (noch) keine Adresse zugeordnet.
Mein Ansatz:
Code:
SELECT t1.title, t2.matchcode FROM project AS t1, address AS t2 WHERE t1.status="offen" AND (t1.address=t2.id OR t1.address=0);

Jetzt finde ich die Projekte ohne Adresszuordnung so oft, wie Adressen existieren.
Ich kann natürlich GROUP BY nutzen, aber in der Ergebnismenge steht dennoch ein falscher Matchcode.

Ich kann auch eine zweite Selektion mit address=0 durchführen, aber dann hätte ich zwei Ergebnisse, die ich nicht sortiert bekomme.
Ich komme einfach nicht auf die Lösung. Kann mich da jemand auf das richtige Gleis setzen?
Danke.
 
Du suchst einen LEFT JOIN

Das müßt eiegntlich gehen:
Code:
SELECT t1.title, t2.matchcode 
FROM project AS t1 LEFT JOIN address AS t2 ON t1.address=t2.id
WHERE t1.status="offen";
 
Zurück
Oben