Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z zapytaniem (LEFT JOIN)
dareckiphp
post
Post #1





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post
lukaswoj
post
Post #2





Grupa: Zarejestrowani
Postów: 136
Pomógł: 0
Dołączył: 2.01.2004
Skąd: Lublin

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Mam nadzieje, że to się da zrozumieć (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Zaznaczam, że przy uzywaniu LEFT JOIN'a ma znaczenie, która tabelę postawimy z lewej strony, a która z prawej.
Go to the top of the page
+Quote Post
dareckiphp
post
Post #3





Grupa: Zarejestrowani
Postów: 107
Pomógł: 0
Dołączył: 10.07.2003

Ostrzeżenie: (0%)
-----


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]
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 12:56