# mySQL Tabellen richtig miteinander verknüpfen (LEFT JOIN)



## morgenstern (26. Januar 2009)

Hallo Leute!

Folgende Situtation:

Ich habe 3 Tabellen:


```
[user]
---------------------
userID | nachname
---------------------

[userprodukte]
---------------------
uprodID | uID | pID
---------------------

[userstudien]
---------------------
ustudID | uID | sID
---------------------
```

Zur Erklärung: Die User-Tabelle besteht aus einer Liste der User, in der userprdoukte-Tabelle stehen die Produkt-IDs (pID) der User (uID) und in der userstudien-Tabelle sind die StudienIDs (sID) der User (uID).

Nun, ich muss eine Liste erstellen mit allen Usern und ihren Produkten und Studien, jedoch hat nicht jeder User ein Produkt oder eine Studie bzw. auch manche keines von beiden, sollen aber trotzdem in der Liste angeführt werden.

Ich habe nun ein Query geschrieben, welches mir alle User ausgibt und auch ihre (falls vorhanden) Produkte, jedoch weiss ich nicht, wie ich nun die Studien in die selbe Liste bringen kann und diese auch sortieren kann.

Query:

```
SELECT 
user.userID  AS userID , user.nachname AS nachname, userproducts.pID AS pID, userproducts.uID AS puID
FROM user LEFT JOIN userproducts
ON user.userID = userproducts.uID
ORDER by  user.userID
```

Die Liste würde in etwa so aussehen (jedes Produkt und jede Studie in eine Zeile).

UserID | Name | Produkt bzw. Studie

Die Namen der Produkte/Studien stehen in 2 anderen Tabellen und werden mit Funktionen umgewandelt (ID -> Name)

Hoffentlich habe ich mich verständlich ausgedrückt. Danke im voraus.


----------



## Bernd1984 (27. Januar 2009)

Hallo morgenstern,

du brauchst nur einen weiteren LEFT JOIN auf die userstudien-Tabelle machen.


```
SELECT 
user.userID  AS userID , user.nachname AS nachname, userproducts.pID AS pID, userproducts.uID AS puID
FROM user LEFT JOIN userproducts
ON user.userID = userproducts.uID
LEFT JOIN userstudien
ON user.userID = userstudien.uID
ORDER by  user.userID
```


----------

