Autor | Zpráva | ||
---|---|---|---|
aoiafafoaosa Profil * |
#1 · Zasláno: 2. 2. 2008, 18:20:37
Zdravím,
mám 2 tabuľky - servery a stats_servery. V tabuľke servery sú uložené informácie o serveri (id, názov, url, kategória, atď.) a v tabuľke stats_servery sú uložené štatistiky zobrazení za 7 dní (7 riadkov na jeden server) pre daný server s rovnakým ID ako je ID serveru. Keď chcem ale vybrať z tabuľky servery zoznam serverov usporiadaný podľa počtu zobrazení za 7 dní s podmienkou, že tento počet zobrazení musí byť väčší ako 1, tak mi vypíše chybu "#1111 invalid use of group by function". Neviete kde by mohla byť chyba? SQL príkaz: SELECT `servery`.`id` AS `server_id`, SUM(`stats_servery`.`zobrazeni`) AS `spolu_zobrazeni`, SUM(`stats_servery`.`kliknuti`) AS `spolu_kliknuti` FROM `servery` LEFT JOIN `stats_servery` ON `stats_servery`.`id` = `servery`.`id` WHERE SUM(`stats_servery`.`zobrazeni`) >= 1 GROUP BY `servery`.`id` ORDER BY `spolu_zobrazeni` DESC,`spolu_kliknuti` DESC Vďaka. |
||
nightfish Profil |
#2 · Zasláno: 2. 2. 2008, 19:22:00
používáš agregační funkci SUM v části WHERE, to samozřejmě není možné, protože SUM se vypočítá až na základě vybraných řádků
přesuň podmínku z WHERE do HAVING select ... from ... left join .. on ... group by `servery`.`id` having sum(`stats_servery`.`zobrazeni`) >= 1 order by `spolu_zobrazeni` DESC... |
||
aoiafafoaosa Profil * |
#3 · Zasláno: 2. 2. 2008, 21:30:15
vo WHERE mám SUM preto, lebo mi nechcelo fungovať WHERE `spolu_zobrazeni` >= 1
Ako by sa to dalo spraviť, aby mi to fungovalo s `spolu_zobrazeni` vo WHERE? Vďaka. |
||
Alphard Profil |
#4 · Zasláno: 2. 2. 2008, 21:58:28
nightfish ti právě poradil, neumíš česky?
místo where dej having, na otázku proč je odpovězeno výše nebo v manuálu having spolu_zobrazeni >= 1 |
||
Časová prodleva: 16 let
|
0