Beste allemaal,
Ik heb de volgende query:

SELECT
	COUNT(*)
FROM
	orders AS o
	LEFT JOIN orders_status_history AS osh
		USING(orders_id)
WHERE
		osh.orders_status_id = 11
	AND
		YEAR(osh.date_added) = 2009
	AND
		MONTH(osh.date_added) = 12


Maar het komt voor dat in orders_status_history meerdere keren de status 11 (annulering) voorkomt.
Nu wil ik alleen die orders selecteren waarbij de date_added 12-2009 is van de eerste keer.

Voorbeeld:
Orders:
orderID | omschrijving
1 | snowboard
2 | ski's
3 | snowboard schoenen
Orders status history:
oshID | orderID | orders_status_id | datum | omschrijving
1 | 1 | 2009-11-15 | 5 | bestelling geplaatst
2 | 1 | 2009-12-05 | 11 | geannuleerd
3 | 2 | 2009-11-20 | 5 | bestelling geplaatst
4 | 2 | 2009-11-21 | 11 | geannuleerd
5 | 2 | 2009-12-01 | 17 | extra mededeling
6 | 2 | 2009-12-09 | 11 | geannuleerd
7 | 3 | 2009-12-06 | 5 | geplaatst
8 | 3 | 2009-12-08 | 11 | geannuleerd

Nu wil ik dus als resultaat krijgen op COUNT(*) bij MONTH = 12 en YEAR = 2009: 2
En niet 4 zoals nu..
Bold Moet dus wel gecount worden.
Italic Moet dus niet gecount worden.

Ik hoop dat het duidelijk is.
Mvg,
Boris


Volgens mij zou je 3 records moeten hebben?

Om de meest actuele order statussen op te halen zou je dit kunnen doen:

SELECT
    COUNT(*)
FROM
    orders AS o
    LEFT JOIN orders_status_history AS osh
        USING(orders_id)
WHERE
    osh.id = ( SELECT 
                osh2.id 
               FROM 
                orders_status_history osh2 
               WHERE 
                osh2.orderID = osh.orderID
               ORDER BY
                osh2.datum DESC )
    AND osh.orders_status_id = 11

Reageren