Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] Problem z zapytnaiem
Forum PHP.pl > Forum > PHP
windman
Wítam,

ten same temet omykowo założyłem w dziale MySql, piszę omyłkowo bo samo sql chyba problemu nie rozwiąże, a może??

nie mogę sobie poradzić z jednym zapytaniem...

Mam tabelę o strukturze:
id
hotelId
pokojId
data

W polu data zapisywana jest data dla której dany pokój jest wolny.

Zapytanie ma pobrać wolne pokoje np. dla okresu od 2009-05-01 do 2005-05-03.
Problem w tym że te trzy wolne dni z rzędu muszą być dla jednego pokoju, czyli chce otrzymać wszystkie pokoje które są wolne w dni z wybranego przedziału (wszystkie trzy dni).

zapytanie:
Kod
SELECT * FROM tabela WHERE (data>=date('2009-05-01') AND data<=date('2009-05-03'))

zwróci mi pokoje, które są wolne 01 albo 02 albo 03, ja muszę mieć tylko te które są wolne 01 oraz 02 oraz 03.

Jakś podpowiedź?
skowron-line
a o BETWEEN kolega nie slyszał questionmark.gif
windman
Cytat(skowron-line @ 7.08.2009, 09:44:00 ) *
a o BETWEEN kolega nie slyszał questionmark.gif


z BETWEEN to mogę sobie moje zapytanie inaczej napisać, a rozwiązanie mojego problemu?
motylo
zapytanie z podzapytaniem, pisze w teorii, gdyż nie mam tego teraz gdzie sprawdzic

  1. SELECT *
  2. FROM tabela WHERE (data>=date('2009-05-01') AND data<=date('2009-05-03')) AND (
  3. SELECT COUNT(*) FROM tabela WHERE (data>=date('2009-05-01') AND data<=date('2009-05-03'))
  4. )>=TO_DAYS(date('2009-05-03'))-TO_DAYS(date('2009-05-01'))


coś w tym stylu pod MySQL -> wyświetla te dni gdzie liczba wystąpień tego samego zapytania (wolnych pokoi)
jest większa lub równa od różnicy dat (dni między);

Trzeba sprawdzić empirycznie no i chyba MySQL większy od 3.23 winksmiley.jpg
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.