Autor Zpráva
AM_
Profil
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 *
Tak si ty dva spojte přes union.
Alphard
Profil
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
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
Jo, osvědčilo se parádně. Díky.
Toto téma je uzamčeno. Odpověď nelze zaslat.