Autor Zpráva
SteveO
Profil *
Dobrý den, opět prosím o pomoc.
Na stránce s inzerátem bychom rádi vypisovali 2 podobné inzeráty ze stejné sekce a nejlépe i podsekce (ta není vždy specifikována).
K tomu používám následující kód:
SELECT * FROM inzeraty WHERE aktivni=1 AND sekce=[id_sekce_aktualniho_inzeratu] ORDER BY podsekce=[id_podsekce_aktualniho_inzeratu] DESC, timestamp DESC LIMIT 2
Potřebovali bychom však, aby se v případě, že jeden inzerát bude mít vyplněnou podsekci a druhý ne, vybraly oba inzeráty bez vyplněné podsekce. Tedy nechceme mít v podobných inzerátech jeden inzerát s podsekcí a druhý bez.
Neptejte se proč, sám tomu moc nerozumím, ale produkťák to prostě chce. :)
Samozřejmě, že to lze vyřešit dalším dotazem, který předem spočítá počet inzerátů, které vyhovují při použití všech podmínek, a podle toho se pak upraví druhý dotaz tak, aby to sedělo.
Toho bych se ale chtěl vyvarovat, MySQL určitě má nějaké inteligentní řešení.
Díky!
Tori
Profil
SteveO:
Jen pro ujasnění: pokud inz.2 má podsekci a inz.3 ne, tak chcete zobrazit inz.2+3 bez podsekce, anebo inz.3 + jiný inzerát který taky nemá podsekci?
SteveO
Profil *
Jiný inzerát který taky nemá podsekci. ;-)
Tori
Profil
Asi bude i lepší řešení (a nevím, kolik dalších podmínek / tabulek v tom dotazu je), ale šlo by třeba použít union: první select = tento, 2.select = 2 inzeráty výslovně bez podsekce. Pak si to načtete do pole po řádcích; pokud druhý prvek pole (inzerát) má podsekci, použijete první dva inzeráty; pokud ne, použijete poslední dva. Pokud dostanete míň než 4 řádky výsledků, tak podobných inzerátů je méně než 2.
SteveO
Profil *
A nedá se to nějak ošetřit ještě v rámci SQL dotazu?
Kcko
Profil
SteveO:
Složitě. Pročto neuděláš v aplikační vrstvě?

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: