Autor Zpráva
Hanysek01
Profil *
mám tabulku rezervaci, kde je datum přijezdu (od) datum odjezdu (do) a čislo chaty.

potřeboval bych udělat podminku do sql dotazu, když dam např: od 1.1.2007 do 2.2.2007 aby mi vratil čisla chat, ktere jsou obsazene, tudiž pro ktere se nějake dny z meho dotazu kryjou se dny uloženymy v tabulce (rezervovanymy)

přemyšlel sem že obsazena chata bude pokud:
datum odjezdu bude v rozmezi "od" - "do"
datum přijezdu bude v rozmezi "od" - "do"
datum přijezdu i odjezdu bude v rozmezi "od" - "do"
datum přijezdu bude před datem "od" a datum odjezdu bude a datem "do"

"od" je sloupec v tabulce s datumem přijezdu rezervace a "do" je sloupec s datumem odjezdu v tabulce s rezervacema.
tyto sloupce jsou typu "date" ve tvaru yyyy-mm-dd takže date_from1 i date_to1 už mám převedene na tento tvar

zkusil sem podle toho sql dotaz napsat, nefunguje ale moc korektně.

SELECT cislo_chaty
FROM rezervace
WHERE
((od >'".$date_from1."') AND (do < '".$date_from1."')) OR
((od >'".$date_to1."') AND (do < '".$date_to1."')) OR
((od >'".$date_from1."') AND (do < '".$date_to1."')) OR
((od <'".$date_from1."') AND (do > '".$date_from1."'))

napada někoho v čem by mohla byt chyba?

když uložim do tabulky od 2007-08-08 do 2007-10-10

tak mi sql dotaz tenhle zaznam nenajde:
SELECT pokoj
FROM `rezervace`
WHERE
`od` >2007-09-09 AND `do`<2007-09-09

msui tam byt
`od` >2007-09-09 AND `do`>2007-09-09

proč?
děkuji za pomoc
roberta
Profil
proč?
pretože žiadny dátum nie je väčší ako 9.9.2007 a zároveň menší ako 9.9.2007
ale kebyže napíšeš aby bol väčší a rovný ako 9.9.2007 a zároveň menší ako 10.9.2007, tak by to malo fungovať
Hanysek01
Profil *

proč?
pretože žiadny dátum nie je väčší ako 9.9.2007 a zároveň menší ako 9.9.2007
ale kebyže napíšeš aby bol väčší a rovný ako 9.9.2007 a zároveň menší ako 10.9.2007, tak by to malo fungovať


ja to 9.9.2007 ale porovnavam s dvěma datumama, v "od" mam uloženo 8.8.2007 a v "do" mam uloženo 10.10.2007 tudiž předpokladam:

`od` >2007-09-09 AND `do`>2007-09-09
8.8.2007 > 9.9.2007 a 10.10.2007 < 9.9.2007

tohle pravě nefunguje, nevim proč.
djlj
Profil
Protože to není formát data (nikoli datumu!). Použij 2007-08-08, a to jak pro uložení do databáze, tak i pro porovnání. Jako typ sloupce zvol DATE.
roberta
Profil
8.8.2007 > 9.9.2007 a 10.10.2007 < 9.9.2007
no a 8.8. je väčšie ako 9.9. a 10.10. je menšie ako 9.9.?
Hanysek01
Profil *
Protože to není formát data (nikoli datumu!). Použij 2007-08-08, a to jak pro uložení do databáze, tak i pro porovnání. Jako typ sloupce zvol DATE.

samo 6e mam typ sloupce date, mam v něm 2007-08-08 a 2007-10-10 a porovnavam s 2007-09-09 a 2007-09-09

8.8.2007 > 9.9.2007 a 10.10.2007 < 9.9.2007
no a 8.8. je väčšie ako 9.9. a 10.10. je menšie ako 9.9.?


i když napišu
where `od`<2007-09-09 AND `do`<2007-09-09

pořad mi to ten zaznam kde:
od = 2007-08-08
do = 2007-10-10
nevybere.
roberta
Profil
teraz si napísal podmienku, že 8.8. je menej ako 9.9. a zaroven 10.10. je menej ako 9.9.
10.10. nie je menej ako 9.9. a preto ti to nenajde nic...
Hanysek01
Profil *
teraz si napísal podmienku, že 8.8. je menej ako 9.9. a zaroven 10.10. je menej ako 9.9.
10.10. nie je menej ako 9.9. a preto ti to nenajde nic...


to by bylo logicke, ale chyba lávky.

funguje to pouze když dam
where `od`>2007-09-09 AND `do`>2007-09-09

nechapu co mam špatně
Kajman_
Profil *
1.1.2007-2.2.2007 by mohlo jít takto

select distinct pokoj
from rezervace
where
(od<='2007-02-02' and do>='2007-01-01')
Hanysek01
Profil *

1.1.2007-2.2.2007 by mohlo jít takto

select distinct pokoj
from rezervace
where
(od<='2007-02-02' and do>='2007-01-01')


pořad to nefunguje spravně.
ještě jednou to zhrnu: mam uložene ve sloupci "od" (datovy typ date) hodnotu 2007-08-08 a vy sloupci "do" (datovy typ date) hodnotu 2007-10-10

potřebuju dotaz ktery mi vybere ten řadek, pokud se budou některe dny z datumu v dotazu kryt s datumy uloženymy v tabulce.

chtěl bych vratit tento zaznam pokud v dotazu bude 7.7.2007 - 9.9.2007, nebo 8.9.2007 - 9.9.2007 nebo 9.9.2007 - 11.11.2007 nebo 7.7.2007 - 11.11.2007.

moje řešeni ktere ovšem nefunguje spravně:

select distinct pokoj
FROM rezervace
WHERE
((od <='".$date_to1."') AND (do >= '".$date_to1."')) OR
((od <='".$date_from1."') AND (do >= '".$date_from1."')) OR
((od >='".$date_from1."') AND (do <= '".$date_to1."'))
LIMIT 0,30");
Kajman_
Profil *
Ještě jednou odpovídám tou samou podmínkou. Už jsem to i zkusil a mně to funguje... jestli on nebude problém mezi židlí a klávesnicí :-)

select distinct pokoj
from (select 1 pokoj, date('2007-08-08') od, date('2007-10-10') do ) rezervace
where od<='2007-11-11' and do>='2007-07-07'

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0