Left Join + SUM

Status
Niet open voor verdere reacties.

Ruultje

Gebruiker
Lid geworden
16 okt 2007
Berichten
39
Ik zit met het volgende probleem.

Ik heb twee tabellen. Deze worden aan elkaar gekoppeld middels left Joins. Bij twee tabellen staan cijfers die beiden berekend moeten worden. Nu is het echter zo dat hij de juiste aantallen niet telt wanneer ik de Left Join inbreng. Hij telt dan die van de Left Join erbij zo lijkt het.

Ik heb nu onderstaande gemaakt. Maar dan krijg ik een foutmelding. Wat doe ik hier fout?

Code:
"SELECT *, SUM(`einduur` - `beginuur`) AS `aantal_uren`, FROM diensten LEFT JOIN (SELECT *, SUM(kilo) AS kilos FROM scrap_verbruik)
GROUP BY WEEK(datum, 1)"
 
In je LEFT join wil je weer een SUM doen in een subselect, dit kan echter niet volgens mij zonder een group by, dus die zal je ook in je subselect moeten toevoegen...

Waarom een LEFT JOIN en geen INNER JOIN trouwens?

Gr Koen
 
SELECT *, SUM()

Dat kan per definitie niet, en daar zou je database (MySQL zeker?) een foutmelding over moeten geven. Bij een AGGREGATE-functie moet je alle kolommen in de SELECT in de GROUP BY opnemen. En GROUP BY * gaat nou eenmaal niet.
 
Ik heb nog enkele dingen geprobeerd. Ook via de INNER JOIN. Maar het wilde allemaal niet werken. Heb daarom maar een andere oplossing gebruikt (omdat ik dit vandaag moest tonen). Ik heb bovenaan het script een extra query geschreven zodat hij dat aantal apart berekend. Ik heb deze daarna een functie gegeven in de php code.

$totaalkilo = $row['kilos'];

Op die manier is het wel gelukt en wijst hij ook het juiste aantal aan.

Ik gebruik inderdaad MySQL.

Ik gebruik LEFT JOIN trouwens vaker, vandaar dat ik deze dus nu genomen heb. Heb nu INNER JOIN ipv LEFT JOIN gepakt.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan