Autor | Zpráva | ||
---|---|---|---|
Exkalibr Profil * |
#1 · Zasláno: 23. 2. 2020, 13:42:15
Chtěl bych rozšířit dotaz, který vyhledává zda uživatel v krátké době odeslal příspěvek s určitým textem na to, aby současně zjistil (v jednom dotaze) jestli během půl hodiny odeslal více než 10 příspěvků nebo během 24 hodin více než 25 příspěvků do tabulky posts.
Mám nějaký pseudo kód, o kterém vím že takto to realizovat nejde: SELECT count(p.id) as c FROM posts AS p WHERE p.poster_id=7 AND ( (1582453177 - p.posted)<301 AND left( p.message, 21)='Testujeme nějakej zaj' OR ( (1582453177 - p.posted)<1801 ) AND c>10 ) ORDER BY p.posted DESC LIMIT 5 Kde c by měl být odkaz na počet záznamů splňující danou podmínku (stáří příspěvku). Šlo by to napsat pomocí HAVING nebo nějak jinak? |
||
Kajman Profil |
#2 · Zasláno: 23. 2. 2020, 13:59:17
Udělejte dva jednoduché dotazy, mělo by to být přehlednější i rychlejší.
|
||
Exkalibr Profil * |
A jak to teda napsat, aby tam byla i ta podmínka WHERE?
A je lepší to řadit vzestupně nebo sestupně? |
||
Kajman Profil |
#4 · Zasláno: 23. 2. 2020, 15:26:42
Ten dotaz nedává smysl. Agregační funkce bez group by vrátí jeden řádek, tak ho řadit a omezovat limitem na 3 řádky je nesmysl. Where a having lze kombinovat. V having se dělají podmínky na výsledky agregačních funkcí.
Přečtěte si o sql nějakou knihu, pak udělejte tři jednoduché dotazy a v aplikaci podmínky ověřte, zda jsou všechny splněny. Bude to přehlednější. |
||
Časová prodleva: 4 roky
|
0