Laden...

Eine Abfrage über 3 Tabellen ausführen

Erstellt von echdeneth vor 4 Jahren Letzter Beitrag vor 4 Jahren 795 Views
echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren
Eine Abfrage über 3 Tabellen ausführen

verwendetes Datenbanksystem: <MySQL>

Hallo,

ich habe gerade ein kleines Abfrageproblem. 3 Tabellen müssel (sollten) in die Abfrage einbezogen werden. Tabelle 1 sind Verträge, 2 sind Mieter und 3 sind Einheiten.
Nicht jede Einheit hat einen Mieter/Vertrag aber alle Einheiten sollen aufgelistet werden und der zugehörige Mieter.

Ergebnis in etwa so
Vertrag.ID---Einheit.Name---Mieter.Name
1--------------01-----------------name1
null-----------02-----------------null
2--------------03---------------- name2


SELECT Vertraege.ID, Einheiten.Name
   
FROM
    Einheiten
LEFT JOIN Vertraege ON Einheiten.ID = Vertraege.Einheiten_ID

bringt mir die eine hälfte ein, aber bislang konnte ich den dazugehörigen Mieter.Name nicht in die Tabelle einbringen.


SELECT Vertraege.ID, Einheiten.Name, Mieter.Name
   
FROM
    Einheiten

LEFT JOIN Vertraege, Mieter ON Einheiten.ID = Vertraege.Einheiten_ID

bringt eine Fehlermeldung: 1064 - Anfrage ergibt keinen Sinn

Ich hoffe ich habe mein Problem verständlich formuliert

Danke in Vorraus

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein

4.939 Beiträge seit 2008
vor 4 Jahren

Du mußt die JOINs einzeln nacheinander auflisten:


SELECT Vertraege.ID, Einheiten.Name, Mieter.Name
FROM Einheiten
LEFT JOIN Vertraege ON Einheiten.ID = Vertraege.Einheiten_ID
LEFT JOIN Mieter ON Einheiten.Mieter_ID = Mieter.Mieter_ID -- oder wie auch immer die Spalten heißen

echdeneth Themenstarter:in
161 Beiträge seit 2019
vor 4 Jahren

Ja Danke, genau das war's
Ich dachte ein zweites LEFT JOIN würde sich auf das die 2. Tabelle beziehen und nicht auf die 1. 🤔 und somit nicht funktionieren. Bzw. ich verstehe dies grundlegen falsch und sollte mit das mal genauer anschauen 😁

"Man muß die Dinge so einfach wie möglich machen. Aber nicht einfacher." Albert Einstein