Mam 4 tabele:
- główna: osoby(id, miasto, stanowisko, status)
- słownikowe: miasta, stanowiska i statusy

W tabeli miasto może nie być wpisu odpowiadającemu kluczowi w tabeli osoby w polu miasto.
Zatem, żeby wyświetlić wszystkie osoby, które nie mają odpowiadającego miasta chciałbym tu zastosować left join.

Mam więc na początek zapytanie w stylu:
  1. SELECT T1.*, T2.miasto FROM `osoby` AS T1 LEFT JOIN miasta AS T2 ON T1.miasto = T2.id


Problem pojawia się, gdy chcę jeszcze dołożyć powiązanie z tabelami stanowiska i statusy na podobnej zasadzie jak miasta, z tą różnicą, że w tych dwóch tabelach zawsze będzie odpowiedni rekord.

Próbowałem:
  1. SELECT T1.*, T2.miasto, T3.stanowisko FROM `osoby` AS T1 LEFT JOIN miasta AS T2, stanowiska AS T3
  2. ON T1.miasto = T2.id AND T1.stanowisko = T3.id

i podobne kombinacje (np. tabela T3 przed joinem) ale nic nie działa.

Macie pomysł jak to ugryźć?


Ok, już sobie poradziłem:

  1. SELECT T1.*, T2.miasto, T3.stanowisko, T4.STATUS FROM `osoby` AS T1
  2. LEFT JOIN miasta AS T2 ON T1.miasto = T2.id
  3. LEFT JOIN stanowiska AS T3 ON T1.stanowisko = T3.id
  4. LEFT JOIN statusy AS T4 ON T1.STATUS = T4.id