SELECT k.k_nr as klantnr, k.k_nm as klantnaam, f.f_nr as factuurnr, r.o_best as orderbestelling, COUNT(DISTINCT r.o_aant), r.o_best*r.o_aant
FROM klanten k
JOIN facturen f
ON (f.k_nr = k.k_nr)
JOIN regels r
ON (f.f_nr = r.f_nr)
GROUP BY k.k_nm
ORDER BY r.o_best*r.o_aant DESC;
Ik weet niet waarom je o_best met o_aant vermenigvuldigt, maar ik zou dit doen:
SELECT klanten.k_nr, klanten.k_naam, sum(regels.o_aant) AS totaal_besteld
FROM regels
JOIN facturen ON facturen.f_nr = regels.f_nr
JOIN klanten ON klanten.k_nr = facturen.k_nr
GROUP BY klanten.k-nr, klanten.k_naam
ORDER BY sum(o_aant) DESC
Vraag is
geef factuurnummer, klantnaam, en factuurbedrag (het totale bedrag van alle orders op een factuur)
SELECT f.f_nr AS Factuurnr, k.k_nm AS Klantnaam, a.a_pps * r.o_aant, r.o_aant, a.a_pps
FROM Facturen f
JOIN Klanten k
ON (k.k_nr = f.k_nr)
JOIN fregels r
ON (r.f_nr = f.f_nr)
JOIN artikelen a
ON (a.a_nr = r.a_nr)
GROUP BY f.f_nr;
Laten we eens kijken of je zelf verder kunt komen...
Als je een totaalbedrag wil, zul je ergens SUM moeten gebruiken. Waar zou dat moeten?
Er is alleen gevraagd om factuurnummer, klantnaam en totaalbedrag, waarom zou je dan meer in de select zetten?
Nog een tip: voor een goed resultaat moet je bij GROUP BY altijd alle velden noemen die niet SUM, MAX en COUNT of dergelijks als functie hebben. Nu doe je alleen GROUP BY of f_nr.
[size=xsmall]Toevoeging op 21/05/2016 15:21:35:[/size]
En nu?? Klopt dit??
SELECT f.f_nr AS Factuurnr, k.k_nm AS Klantnaam, SUM(a.a_pps) AS Totaal
FROM Facturen f
JOIN Klanten k
ON (k.k_nr = f.k_nr)
JOIN Regels r
ON (r.f_nr = f.f_nr)
JOIN Artikelen a
ON (a.a_nr = r.a_nr)
GROUP BY f.f_nr, k.k_nm
ORDER BY SUM(a.a_pps);
Ik denk dat dit al een heel eind klopt.
Ik ken natuurlijk niet de betekenis van je velden, maar a_pps lijkt met prijs per stuk voor elk artikel.
Dat zul je waarschijnlijk nog moeten vermenigvuldigen met het aantal uit regels, zoals je ook in je origineel deed (van 14:42). En dat kan best binnen de SUM().