DISTINCT... et requête "inverse" ??

Fermé
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021 - 26 avril 2017 à 10:53
luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 - 26 avril 2017 à 12:25
Bonjour,

Je dois générer une liste dans moins de deux heures. Cependant avant de la vérifier, j'aimerais savoir si un même utilisateur possède deux états de commande différent.
En général un utilisateur paie sa commande et basta. Mais rarement, il arrive qu'il la paie puis repasse commande par la suite. Il a alors deux commandes dans deux états (trackers) différents. Exemples :

user_ID / commande_TRACKER
20145 / suspended
20146 / paid
20146 / suspended
20147 / paid
20148 / paid
20149 / suspended


Quelle requête SQL dois-je faire pour trouver tous les user_ID semblables à 20146, c'est à dire avec des commande_TRACKER dans des états différents ?

Merci pour votre précieuse aide !

2 réponses

luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 815
Modifié le 26 avril 2017 à 11:04
Bonjour !

J'aurais essayé quelque chose du genre ça :

SELECT user_ID
FROM (SELECT count(user_ID) as nb, user_ID FROM TABLE) temp
where temp.nb > 1;


Bonne journée

Luc

Les 3 plus grands mensonges du dev ? La doc sera faite plus tard... Le programme n'a aucun bug... Les spécifs sont finies...
Un peuple sacrifiant sa liberté pour plus de sécurité perd les deux.
0
Southstyle Messages postés 46 Date d'inscription mardi 17 avril 2012 Statut Membre Dernière intervention 26 mars 2021
26 avril 2017 à 11:42
Merci pour ta réponse @luckydu43.
J'ai provisoirement fait comme cela, à savoir une recherche dans une table liée à une autre recherche :

SELECT * FROM commandes c, students s WHERE s.student_id = c.commande_student_id AND c.commande_track NOT LIKE 'paid' AND c.commande_student_id IN (SELECT commande_student_id FROM `commandes` WHERE commande_track = 'paid') GROUP BY c.commande_student_id


C'est pas très esthétique, non ? :-)
0
luckydu43 Messages postés 3484 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 30 juin 2022 815
Modifié le 26 avril 2017 à 12:36
Je ne trouve pas. La requête répond à un cas particulier, à savoir la possibilité à un client d'effectuer plusieurs commandes
Si tu voyais les requêtes qu'on fait au taf pour respecter l'ensemble des règles fonctionnelles... tu trouverais celle-ci littéralement digne d'un cas d'école :-D

S'il fallait revoir le schéma de BDD, j'aurais proposé :
STUDENT (id, nom, prenom, âge du chien, numéro de carte bancaire)
COMMANDE (id, date, adresse, id_client, commande_tracker)
ARTICLE (id, taille, libelle, categorie (qu'on peut mettre dans une table si on veut faire du propre)
JOIN_COMMANDE_ARTICLE (id_commande, id_article)

EDIT : j'ai édité
0