Joins en groeperen Help!!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pink A

Pink A

21/05/2016 13:40:08
Quote Anchor link
Hi Guys

Ik kom er niet meer uit met een vraag wie kan mij hiermee helpen. Misschien heb ik wel de oplossing.

Ik heb 4 tabelen.
artikelen >a_nr, a_oms, a_pps
facturen >f_nr, f_dat, k_nr
klanten >k_nr, k_nm
regels >f_nr, f_regnr, o_best, o_aant, a_nr

Dit heb ik er van gemaakt.

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;

Maar ik denk dat ik hier iets niet handig doe.

Greetz
Gewijzigd op 21/05/2016 22:08:48 door Pink A
 
PHP hulp

PHP hulp

16/11/2024 03:41:52
 
Jan de Laet

Jan de Laet

21/05/2016 14:24:09
Quote Anchor link
Ik weet niet waarom je o_best met o_aant vermenigvuldigt, maar ik zou dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
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
 
Pink A

Pink A

21/05/2016 14:33:08
Quote Anchor link
Woooow Thanks Jan de laet.

Kan ik jou prive mailen ik heb nog een paar andere vragen.
deze heb ik ook uitgewerkt maar weet niet of t klopt.
 
Jan de Laet

Jan de Laet

21/05/2016 14:34:50
Quote Anchor link
Liever hier in de groep, dan kan iedereen er van leren.
 
Marthijn Buijs

Marthijn Buijs

21/05/2016 14:35:30
Quote Anchor link
Zet het maar gewoon in dit topic neer, dan kunnen andere leden je misschien ook helpen.
 
Pink A

Pink A

21/05/2016 14:42:00
Quote Anchor link
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;
Gewijzigd op 21/05/2016 22:09:51 door Pink A
 
Jan de Laet

Jan de Laet

21/05/2016 14:51:18
Quote Anchor link
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.
 
Pink A

Pink A

21/05/2016 14:53:55
Quote Anchor link
Ow crap!!
Oke, ik zal eens ff proberen.

Thanks!

Toevoeging op 21/05/2016 15:21:35:

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);
Gewijzigd op 21/05/2016 16:22:10 door Pink A
 
Jan de Laet

Jan de Laet

21/05/2016 18:00:08
Quote Anchor link
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().
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.