Autor | Zpráva | ||
---|---|---|---|
JardaB Profil |
#1 · Zasláno: 4. 6. 2019, 10:44:26
Zdravím, prosím o pomoc s dotazem přes tři tabulky. Původně jsem měl dotaz jen přes dvě, což bylo ok. Potřebuji přidat kvůli rozšíření třetí tabulku, která mi sečte všechny bonusy klienta na daném revíru. V tomto případě bonusy 'obsadka'
SELECT a.id, a.rozloha, a.id_klient, a.nazev, (SUM( b.vaha ) /1000 / a.rozloha) status_kg, COUNT( b.id ) ks, SUM( c.obsadka ) obs FROM vr3_reviry_klient a JOIN vr3_fish_klient b ON b.id_revir = a.id LEFT JOIN vr3_bonusy_klient c ON c.id_revir = a.id GROUP BY a.id, a.rozloha, a.id_klient, a.nazev ORDER BY status_kg DESC LIMIT 1 Počet bonusů v revíru může být více. Dostávám ale u 'obs' součin s 'ks', což je logické. Postačí nějak upravit jen GROUP BY?, nebo bude tento dotaz mnohem složitější? |
||
Kajman Profil |
#2 · Zasláno: 4. 6. 2019, 12:05:29
Pokud sčítáte vše, joinujte už seskupená data.
JOIN (SELECT c2.id_revir, SUM(c2.obsadka) sum_obsadka FROM vr3_bonusy_klient c2 GROUP BY c2.id_revir) c ON c.id_revir = a.id Pokud obsádku potřebuje jen pro pár řádků, měl by být rychlejší korelovaný poddotaz v select části. ...status_kg, COUNT( b.id ) ks, (SELECT SUM( c.obsadka ) FROM vr3_bonusy_klient c WHERE c.id_revir = a.id) obs |
||
JardaB Profil |
#3 · Zasláno: 4. 6. 2019, 12:25:13
Moc děkuji.. bonusy budou do sta řádků, vyzkouším oba případy a uvidíme co bude rychlejší..
|
||
Časová prodleva: 6 let
|
0