DISTINCT... et requête "inverse" ??
Southstyle
Messages postés
46
Statut
Membre
-
luckydu43 Messages postés 4632 Date d'inscription Statut Membre Dernière intervention -
luckydu43 Messages postés 4632 Date d'inscription Statut Membre Dernière intervention -
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 !
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 !
A voir également:
- DISTINCT... et requête "inverse" ??
- Annuaire inversé - Guide
- Ecran inversé - Guide
- Annuaire inverse espagne - Forum Mobile
- Annuaire inversé sfr ✓ - Forum Mobile
- Annuaire inversé suisse ✓ - Forum Mail
2 réponses
Bonjour !
J'aurais essayé quelque chose du genre ça :
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.
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.
Merci pour ta réponse @luckydu43.
J'ai provisoirement fait comme cela, à savoir une recherche dans une table liée à une autre recherche :
C'est pas très esthétique, non ? :-)
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 ? :-)
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é
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é