[SQL] Limit in join

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer Industriële Automatiseri

Raster wordt continu betrokken bij complexe en baanbrekende projecten in industriële automatisering. Ons team is gespecialiseerd in productie automatisering en proces automatisering projecten waarin procesveiligheid een belangrijk aspect is. Ons compact en groeiend OX (Operational Excellence) team ontwikkelt, configureert en levert support op zelfontwikkelde applicaties waarmee onze klanten hun productieprocessen slimmer, sneller, goedkoper en veiliger maken. Operational Excellence wordt zichtbaar gemaakt in resultaten. Bij bedrijven met dezelfde strategie, zal een operationeel excellent bedrijf een lager operationeel risico, lagere operationele kosten hebben en relatief meer winst maken. Het Raster OX team laat haar klanten de resultaten behalen door hun eigen procesdata

Bekijk vacature »

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

03/12/2021 02:34:48
 
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.