Bonjour,
Je rencontre un problème sur la conception de ma bdd. Je vous explique.
J'ai une table 'users' avec id/nom/prenom.
Et une autre table 'categorie' avec id/cat/value
Par exemple:
table user
1/pierre/dupont
2/paul/richard
table categorie
1/3/6
1/3/8
1/5/5
2/3/6
2/4/9
...
Admettons que je cherche les users qui dans la categorie 3 ont la value 6 ou 8:
SELECT DISTINCT tab1.id, tab1.prenom, tab1.nom FROM users as tab1 INNER JOIN categorie as tab2 ON tab1.id = tab2.id WHERE tab2.cat = 3 AND tab2.value IN (6,8)
Maintenant, et c'est là que se trouve mon problème, si je cherche les user les users qui dans la categorie 3 ont la value 6 et 8:
Comment puis je faire?
Il y a la solution de faire plusieurs INNER JOIN:
SELECT DISTINCT tab1.id, tab1.prenom, tab1.nom FROM users as tab1 INNER JOIN categorie as tab2 ON tab1.id = tab2.id INNER JOIN categorie as tab3 ON tab1.id = tab3.id WHERE (tab2.cat = 3 AND tab2.value = 6) AND (tab3.cat = 3 AND tab3.value = 8)
Là ça pourrait aller, mais si j'ai 50 choix de value je vais pas faire 50 INNER JOIN.
Donc voilà où j'en suis. Il y a sûrement une solution beaucoup plus simple mais là je ne vois pas.
Si quelqu'un à une idée je suis preneur.
Merci et bonne fêtes de fin d'année.
Partager