Autor | Zpráva | ||
---|---|---|---|
JardaB Profil |
#1 · Zasláno: 23. 4. 2019, 18:30:25
Zdravím,
opět potřebuji trochu popostrčit a poradit. Mám dotaz přes dvě tabulky a chci jednak zjistit celkovou sumu váhy což je OK, ale chci také zjistit počty délky v daném rozmezí. Zkoušel jsem následující, ale předpokládám, že takto nelze. SELECT a.nazev, a.rozloha, SUM( b.vaha ) vaha, COUNT( b.delka BETWEEN 150 AND 200 ) FROM vr3_reviry_klient a JOIN vr3_fish_klient b ON a.id = b.id_revir WHERE a.status_hospodareni =1 GROUP BY b.id_revir LIMIT 100 Musím snad např. přes JOIN? |
||
Kajman Profil |
Between vrátí 0 nebo 1. Pokud tedy požijete sum místo count (které počítá počet nenull hodnot), mělo by to sedět.
Ale máte zmatek v select části vůči group by části. |
||
JardaB Profil |
#3 · Zasláno: 24. 4. 2019, 07:10:12
Kajman:
Děkuji, funguje perfektně. Dotaz jsem opravil i v group by části, snad je nyní ok.. SELECT a.id_klient, a.id, a.nazev, a.rozloha, SUM( b.vaha ) vaha, SUM( b.delka BETWEEN 150 AND 200 ) FROM vr3_reviry_klient a JOIN vr3_fish_klient b ON a.id = b.id_revir WHERE a.status_hospodareni =1 GROUP BY a.id LIMIT 100 |
||
Kajman Profil |
#4 · Zasláno: 24. 4. 2019, 08:19:42
Není to ok, i když se to na nějakých konfiguracích tak může zdát. V group by mají být alespoň všechny sloupce, které nejsou obalené agregační funkcí. Tedy
GROUP BY a.id_klient, a.id, a.nazev, a.rozloha Pro vývoj si vždy zapněte mód ONLY_FULL_GROUP_BY, ať aplikace nepřestane fungovat např. po update verze mysql nebo změně nastavení. |
||
JardaB Profil |
#5 · Zasláno: 24. 4. 2019, 08:39:17
Kajman:
Ano to zní logicky... Moc děkuji.. |
||
Časová prodleva: 5 let
|
0