Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 29. 3. 2009, 19:20:08
Zdravím,
mám tabulku rozpis_sluzeb, která se skládá ze 2 sloupců: id - podle toho se z jiné tabulky načítá množina služeb připadající na tento rozpis from_date - počátek platnosti tohoto rozpisu. V připojené tabulce jsou uloženy po týdnu se opakující služby. Princip je takový, že každý den je v platnosti rozpis s datem onoho dne nebo nejbližším nižším datem (zkrátka každý rozpis platí od svého from_date a končí svou platnost tam, kde začíná nejbližší další rozpis). Nyní mám PHP script, který má zobrazit rozpis služeb na určitý měsíc. To znamená zjistit, který rozpis platí ze začátku měsíce, a které rozpisy přijdou v platnost během onoho měsíce. Zatím to řeším dvěma dotazy: SELECT ... FROM rozpis_sluzeb WHERE from_date > '$zacatek' AND from_date < '$konec' SELECT ... FROM rozpis_sluzeb WHERE from_date <= '$zacatek' LIMIT 1 Mohl bych z tabulky samozřejmě jedním příkazem vytáhnout všechny rozpisy, jenže až bude v tabulce hodně dat, asi by to nebylo zdaleka nejlepší. Dále je problém tento, že když v SELECTu rovnou spojím záznamy v rozpis_sluzeb s příslušnými definovanými službami, tak se mi pro jedno datum vrátí více než jeden záznam, takže LIMIT 1 už nelze použít ani tady. Potřeboval bych nějakou podmínku, která vybere všechny záznamy s datem v daném rozmezí + nejbližším nižším (kterých může být více - se stejným datem), ví někdo, jak na to? děkuji za rady. |
||
Kajman_ Profil * |
#2 · Zasláno: 29. 3. 2009, 19:32:04
Tak si ty dva spojte přes union.
|
||
Alphard Profil |
#3 · Zasláno: 29. 3. 2009, 19:33:22
nešlo by to nějak takhle?
SELECT ... FROM rozpis_sluzeb WHERE from_date = (select from_date from rozpis_sluzeb where from_date < '$zacatek' order by from_date desc LIMIT 1) union all SELECT ... FROM rozpis_sluzeb WHERE from_date between '$zacatek' AND '$konec' PS: jak mám skloňovat tvou přezdívku, nedávno jsem chtěl psát podle AM_ovy rady a radši jsem přeformuloval větu :-) |
||
AM_ Profil |
#4 · Zasláno: 29. 3. 2009, 20:03:31
Alphard
Díky, zkusím, to bude asi ono, se složitějšími SQL konstrukcemi se teprve seznamuji :) Sklňovat můžeš jenom AM, to je moje skutečná přezdívka, ale jakpsatweb nepodporuje <třípísmenné přezdívky :) |
||
AM_ Profil |
#5 · Zasláno: 29. 3. 2009, 20:26:39
Jo, osvědčilo se parádně. Díky.
|
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0