sql >> Database teknologi >  >> RDS >> Mysql

Gruppér efter id med max(date_field)

Her skal du have en underforespørgsel, som får den seneste date_add for hver id_order i tabellen ps_order_history . Resultatet af underforespørgslen føjes derefter tilbage til den oprindelige tabel ps_order_history forudsat at den består af to kolonner:date_add og id_order .

SELECT  c.firstname, 
        c.lastname, 
        d.product_name, 
        o.payment, 
        s.name, 
        h.date_add
FROM    ps_orders o
        INNER JOIN ps_order_detail d ON d.id_order = o.id_order
        INNER JOIN ps_customer c ON c.id_customer = o.id_customer
        INNER JOIN ps_order_history h ON o.id_order = h.id_order
        INNER JOIN  
        (
            SELECT  id_order, MAX(date_add) max_date
            FROM    ps_order_history
            GROUP   BY id_order
        ) x ON  h.id_order = x.id_order AND
                h.date_add = x.max_date
        INNER JOIN ps_order_state_lang s ON s.id_order_state = h.id_order_state
WHERE   s.id_lang =6
GROUP   BY c.id_customer


  1. rydde op i db for overflødige data

  2. Hukommelsesgrænser i SQL Server 2016 SP1

  3. PHP, ORM, MSSQL og Unicode, er det muligt at få disse til at fungere sammen?

  4. Hvordan bygger jeg en parameteriseret PDO-sætning i PHP til en dynamisk forespørgsel?