Autor Zpráva
Exkalibr
Profil *
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
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
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ší.

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:

0