Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z zapytaniem (LEFT JOIN)
Forum PHP.pl > Forum > Bazy danych
dareckiphp
W tabeli "stoliki" jest więcej stolików. Jak zastosować opcję LEFT JOIN tak żeby wypisał mi wszystkie stoliki z tabeli a nie tylko te które mają powiązania?

Dzieki wielkie

[sql:1:05e787ba09]
select distinct (stolik.id_stolika), sektor.id_sektora, kondygnacja.id_kond, rezerwacja.data_rez,
rezerwacja.od_rez

from stolik join sektor join kondygnacja join rezerwacja
on stolik.id_sektora=sektor.id_sektora
and sektor.id_kond=kondygnacja.id_kond
and stolik.id_stolika=rezerwacja.id_stolika

where kondygnacja.id_kond='1'
and (stolik.id_sektora=sektor.id_sektora)
[/sql:1:05e787ba09]
lukaswoj
Załóżmy, że są takie dwie tabele: "samochody", "extra_wyposazenie" i chcesz jednocześnie wybrać wszystkie samochody, które mają extra wyposażenie i te, które go nie mają.

Jeśli zrobisz tak:
Kod
SELECT * from samochody as a, extra_wyposazenie as b WHERE a.samochod_id = b.samochod_id;

dostaniesz tylko te, które mają extra wyposażenie, ścislej mówiąc, tylko te, dla których istnieje rekord w tabeli "extra_wyposazenie".

Żeby osiągnąć efekt musisz użyć czegoś takiego:
Kod
SELECT * from samochody as a LEFT JOIN extra_wyposazenie as b ON ( a.samochod_id = b.samochod_id );

Teraz będziesz miał wszsytkie samochody, a w wierszach z samochodami, dla których nie istniał rekord w "extra_wyposazenie" będziesz miał wartości NULL dla pól z tej tabeli.

Wolę wytłumaczyć i zmusić do praktykowania niż podać na tacy smile.gif

Mam nadzieje, że to się da zrozumieć smile.gif

Zaznaczam, że przy uzywaniu LEFT JOIN'a ma znaczenie, która tabelę postawimy z lewej strony, a która z prawej.
dareckiphp
Ja wiem jaka jest składnia, problem w tym, że nie daje się ona zastosować w tej esuelce

[sql:1:7992337db3]
select distinct (stolik.id_stolika), sektor.id_sektora, kondygnacja.id_kond, rezerwacja.data_rez,
rezerwacja.od_rez
FROM stolik left JOIN rezerwacja ON stolik.id_stolika = rezerwacja.id_stolika INNER JOIN sektor ON
sektor.id_sektora = stolik.id_sektora INNER JOIN
kondygnacja ON kondygnacja.id_kond = sektor.id_kond
where kondygnacja.id_kond='1'
[/sql:1:7992337db3]
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.