Autor | Zpráva | ||
---|---|---|---|
hhoeo Profil * |
#1 · Zasláno: 12. 7. 2016, 19:47:31
Ahoj, potřeboval bych poradit. Mám následující databázi:
groups(idGroup, name) payments(id, idGroup, price, description) a potřebuji vypsat skupinu a k ní součet všech cen. Ale některé skupiny nemají žádné platby takže výsledkem bude skupina + nulový součet. Zatím mám toto: select idGroup, g.name, sum(p.price) from groups as g left join payments as p on p.idGroup = g.idGroup Děkuji za radu |
||
juriad Profil |
#2 · Zasláno: 12. 7. 2016, 19:52:31
Ten dotaz vypadá, že by měl fungovat. Je s ním nějaký problém?
|
||
hhoeo Profil * |
No mám prázdnou tabulku payments a naplněnou tabulku groups a výsledek je prázdný dotaz
Když tam nemám tu sumu jenom join tak mi to vypíše vše z groups když tam přidám ten sum tak mi to vypíše jen první hodnotu z groups. |
||
TomášK Profil |
#4 · Zasláno: 12. 7. 2016, 21:58:33
Chybí tam group by:
SELECT idGroup, g.name, sum(p.price) FROM groups as g LEFT JOIN payments as p ON p.idGroup = g.idGroup GROUP BY g.idGroup, g.name |
||
hhoeo Profil * |
#5 · Zasláno: 12. 7. 2016, 22:16:55
joo to je přesně ono! Díky
|
||
Kajman Profil |
#6 · Zasláno: 13. 7. 2016, 08:38:33
A pokud nechcete v součtu dostávat null hodnoty, tak to můžete ještě ošetřit a vracet místo toho nulu.
SELECT idGroup, g.name, coalesce(sum(p.price),0) soucet FROM ... |
||
Časová prodleva: 9 let
|
0