[SQL] Limit in join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Boris Mattijssen

Boris Mattijssen

23/12/2009 22:25:00
Quote Anchor link
Beste allemaal,
Ik heb de volgende query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
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
Gewijzigd op 01/01/1970 01:00:00 door Boris Mattijssen
 
PHP hulp

PHP hulp

19/03/2024 12:48:12
 
Martijn B

Martijn B

23/12/2009 22:50:00
Quote Anchor link
Volgens mij zou je 3 records moeten hebben?

Om de meest actuele order statussen op te halen zou je dit kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 



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.