Aller au contenu

NOT DISTINCT


cognotte

Sujets conseillés

Bonjour,

Je vous explique mon titre un peu étrange.

Voila pour simplifier j'ai une table avec 3 champs :

- un id auto incrémenté (id)

- un id clef de liaison vers la table 1 (_table1)

- un id clef de liaison vers la table 2 (_table2)

exemple :

id	_table1	 _table2 
1 1 1
2 2 1
3 3 1
4 2 2
5 4 1
6 1 2

Je voudrais récupérer les lignes ou _table1 est définie pour les deux valeurs de _table2. (ici récupérer _table1 = 1 et _table1 = 2)

Je pensais que l'inverse de DISTINCT fonctionnerais, mais j'arrive pas a faire une requête satisfaisante.

Je ne peut pas non plus faire de requêtes imbriquées.

Quelqu'un aurait une piste ?

Ai-je été assez claire ?

Ben

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

j'ai eu un peu de mal à comprendre ta question, mais je crois que pour ta requête, ce serait un truc du genre :

SELECT * FROM `_table0` WHERE (id_table2 =id_table1) group by id_table2

Avce pour données d'entrées :

si _table0 est ta table qui conteint les 3 clés et les données suivantes (comme tu l'a enoncé) :
id id_table1 id_table2
1 1 1
2 2 1
3 3 1
4 2 2
5 4 1
6 1 2

Ce qui donne en resultat :

id	id_table1	id_table2
1 1 1
4 2 2

On a bien donc ce que tu souhaites :

récupérer id_table1 = 1 et id_table1 = 2
Le résultat est groupé sur le champ id_table2 et donne 2 réponses...

Bonne soirée

En espérant avoir été clair... :)

Lien vers le commentaire
Partager sur d’autres sites

Merci de ta réponse,

Mais je crois que je n'ai malheureusement pas été assez clair.

Je vais imager :

Ma table est en fait une table de commande comportant une référence a un client et une référence a un produit.

Je voudrais donc savoir par exemple quels sont les clients qui ont commandé le produit X ET le produit Y.

id	 client	 produit
1 cA X
2 cB X
3 cA Y
4 cC Y
5 cD Y
6 cE X
7 cC X
8 cF Y
9 cD X

Donc la le résultat souhaité serait cA, cC, cD;

Voila j'espère avoir été un peu plus clair.

Ben

Lien vers le commentaire
Partager sur d’autres sites

Je crois avoir un début de solution :

SELECT COUNT( * ) AS nombre, client
FROM `table`
WHERE produit
IN ( X, Y )
GROUP BY produit

Ca me donne le nombre de clients qui ont les deux produits, maintenant il me manque la liste de ces clients.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...