Ik heb de volgende tabel


ORDERS
id| cust | ispaid |
__|______|________|
1 | A    | 1      |
2 | B    | 1      |
3 | C    | 1      |
4 | D    | 1      |
5 | D    | 0      |
6 | E    | 0      |
7 | E    | 0      |
8 | E    | 0      |
9 | F    | 0      |
10| G    | 1      |


Nu wil ik van de laaste 10 orders zien hoeveel orders er niet betaald zijn. In het bovenstaande voorbeeld zou dit getal wat er uit moet komen dus 2 zijn (customer E en F). Customer D niet want die heeft wel in ieder geval 1 wel betaalde order.

Ik gebruikte de volgende query:


SELECT id,ispaid FROM orders WHERE `ispaid` = '0' GROUP BY `cust` LIMIT 0,10


Alleen krijg ik nu alle klanten die een order hebben die niet betaald is. Wat kan ik in de query veranderen zodat ik alleen met deze voorbeeld tabel customer E en F als output krijg?

Alvast bedankt voor jullie hulp.
hoe wil je, zonder datum-tijd vermelding bepalen wat de laatste 10 orders zijn ?
Op de ID's kun je niet vertrouwen, na database onderhoud kunnen lege gaten weer opgevuld worden.
aangenomen dat sorteren op ID voldoet:

Je moet dus achterhalen
- wat zijn de laatste 10 orders
- welke user heeft niets betaald.

stap 1:

SELECT cust, ispaid FROM orders ORDER BY id DESC LIMIT 10




Dan heb je dus de dataset die je moet onderzoeken. Voor het gemak: denk even dat dit de tabel dataset10 zou zijn/

stap 2:

SELECT cust, SUM(ispaid) AS betaald
FROM dataset10
GROUP BY cust
HAVING SUM(ispaid) =  0


nu die 2 in elkaar schuiven:


SELECT cust, SUM(ispaid) AS betaald
FROM (SELECT cust, ispaid FROM orders ORDER BY id DESC LIMIT 10) AS dataset10
GROUP BY cust
HAVING SUM(ispaid) =  0


dat zijn de klanten van de laaste 10 orders, die van die laatste 10 orders nog niets betaald hebben.
of dat een zinvol gegeven is?
dat verandert zodra er een order bij komt.
Bedankt voor je info, uiteraard heeft deze tabel ook een kolom met ordernummer en een kolom met de datum. Gaten in het ID vullen we alleen sowieso niet op die laten we gewoon staan.

Ik zal de query van Ivo later op de dag een keer draaien om te zien of dat het gewenste resultaat heeft.
Ik mag er vanuit gaan dat je een aparte tabel customers hebt? Dan kun je met je join al filteren.

Reageren