Jump to content

Requête SQL états de commandes


Recommended Posts

Bonjour,

J'essaye de faire une requête SQL qui me donnerait les id des commandes qui ont le status id 5 sans jamais avoir eu le status id 23. J'ai déjà toutes les commandes qui ont eu l'un ou l'autre des status :

select id_order,id_order_state from ps_order_history where id_order_state in ('5','23')

2893 5
2893 23
2893 5
2891 5
2891 23
2891 5

Mais elles sont sur plusieurs lignes.

Je n'arrive pas à exclure les commandes qui ont été à l'état 23 (l'opérateur EXCEPT / MINUS ne marche pas).
J'ai regroupé les commandes avec tout leur historique de status id mais je n'arrive pas ensuite à exclure les lignes contenant 23 :

SELECT id_order, GROUP_CONCAT(id_order_state) AS id_order_state FROM ps_order_history GROUP BY id_order desc

2895 4,3,9,2
2894 4,3,9,2
2893 23,5,4,3,9,2
2892 4,3,9,2
2891 23,5,4,3,9,2

Si quelqu'un peut me faire avancer un peu ça serait top :)

 

Link to comment
Share on other sites

select o.id_order, group_concat(ohd.id_order_state ORDER BY ohd.id_order_history) as status
from ps_order_history oh
inner join ps_orders o on o.id_order = oh.id_order
left join ps_order_history ohx on ohx.id_order = oh.id_order and ohx.id_order_state = 23
inner join ps_order_history ohd on ohd.id_order = oh.id_order
where oh.id_order_state = 5 and ohx.id_order is null
group by o.id_order

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...