Autor Zpráva
hhoeo
Profil *
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
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
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 *
joo to je přesně ono! Díky
Kajman
Profil
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 ...

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