mam dwie tabele, załóżmy: pokoje i rezerwacje
w tabeli pokoje mam id_pokoju, nazwe, cena
w tabeli rezerwacje mam id_rezerwacji, id_pokoju (relacja z tabela pokoje), czas_od, czas_do, typ_rezerwacji (1 - zajete, 2 - wstepna)
i teraz chcę pobrać dla np. dnia dzisiejszego listę pokoi wraz z informacją, czy jest zajęte, jesli tak to od kiedy do kiedy...
mogę to zrobić tak:
SELECT *, (SELECT count(rezerwacje.id_rezerwacji) FROM rezerwacje WHERE rezerawcje.pokoj_id=pokoje.pokoj_id AND WHERE czas_od =< today() AND WHERE czas_do >= today() ORDER BY czas_od ASC LIMIT 1) AS zajetosc, (SELECT rezerwacje.czas_od FROM rezerwacje WHERE rezerawcje.pokoj_id=pokoje.pokoj_id AND WHERE czas_od =< today() AND WHERE czas_do >= today() ORDER BY czas_od ASC LIMIT 1) AS czas_od, (SELECT rezerwacje.czas_do FROM rezerwacje WHERE rezerawcje.pokoj_id=pokoje.pokoj_id AND WHERE czas_od =< today() AND WHERE czas_do >= today() ORDER BY czas_od ASC LIMIT 1) AS czas_do,
a może tak?:
SELECT *, (SELECT rezerwacje.id_rezerwacjifrom rezerwacje WHERE rezerawcje.pokoj_id=pokoje.pokoj_id AND WHERE czas_od =< today() AND WHERE czas_do >= today() ORDER BY czas_od ASC LIMIT 1) AS id_rezerwacji, JOIN LEFT rezerwacje ON pokoje.id_rezerwacji=rezerwacje.id_rezerwacji
problem polega na tym, że rezerwacji może być sporo (różne terminy), ja potrzebuję tylko tę, która w danym dniu jest znacząca (pokoj wolny lub zarezerwowany_) i całe info o niej.
tabela rezerwacje ma jeszcze typ rezerwacji, ale dla czytelnosci pominalem go, bo potrafię sobie dodać nową linijkę where typ_rezerwacji.... :-)
SELECT pokoje.*, rezerwacje.* FROM pokoje LEFT JOIN rezerwacje ON pokoje.pokoj_id=rezerwacje.pokoj_id WHERE rezerwacje.czas_od <= now() AND rezerwacje.czas_do >= now()
dotarłem do takiego kodu jak powyżej,
taki kod zaś zwraca mi tylko liste pokoi z rezerwacjami, a ja chciałbym by była cała lista pokoi z info o rezerwacji wtedy gdy istnieje....
// ROZWIĄZANE
znalazłem, problemem było WHERE :-)
SELECT pokoje.*, rezerwacje.* FROM pokoje LEFT JOIN rezerwacje ON pokoje.pokoj_id=rezerwacje.pokoj_id AND rezerwacje.czas_od <= now() AND rezerwacje.czas_do >= now()