benbine Posted March 25, 2019 Share Posted March 25, 2019 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 More sharing options...
doekia Posted March 25, 2019 Share Posted March 25, 2019 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 More sharing options...
benbine Posted March 25, 2019 Author Share Posted March 25, 2019 Au top merci beaucoup 👍 Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now