Autor | Zpráva | ||
---|---|---|---|
SteveO Profil * |
#1 · Zasláno: 7. 1. 2013, 18:03:29
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 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 * |
#3 · Zasláno: 7. 1. 2013, 18:17:09
Jiný inzerát který taky nemá podsekci. ;-)
|
||
Tori Profil |
#4 · Zasláno: 7. 1. 2013, 18:26:32
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 * |
#5 · Zasláno: 7. 1. 2013, 20:30:40
A nedá se to nějak ošetřit ještě v rámci SQL dotazu?
|
||
Kcko Profil |
#6 · Zasláno: 7. 1. 2013, 20:33:05
SteveO:
Složitě. Pročto neuděláš v aplikační vrstvě? |
||
Časová prodleva: 11 let
|
0