Autor Zpráva
JardaB
Profil
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
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
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
Kajman:


Ano to zní logicky... Moc děkuji..

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