Bonjour à tous,
J'ai une question technique sur la conception d'une requête SQL.
Pour tenter d'être le plus clair possible, voici un exemple :
Le champs IdTable1 est une clé étrangère qui référence Table1.id.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Table1 ( Id (Entier) ) Table2 ( <div style="margin-left:40px">IdTable1 (Entier) Attribut (Entier)</div>)
La clé primaire de Table2 est IdTable1 et Attribut.
Exemple de jeu de valeurs :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Table1 0 1 Table2 0 1 0 4 0 5 1 1 1 2 1 3 1 5
Je souhaite conaitre tous les éléments de table1 pour qui possèdent Attribut = 3 ET Attribut = 5.
Ma requête est la suivante :
Dans mon exemple, la requete doit renvoyer l'élément de table1 ayant l'Id "1".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 SELECT t1.Id FROM Table1 t1, Table2 t2 WHERE t2.IdTable1 = t1.Id AND t1.ID IN ( SELECT t1.Id FROM Table1 t1, Table2 t2 WHERE t2.IdTable1 = t1.Id AND t2.Attribut = 3) AND t1.ID IN ( SELECT t1.Id FROM Table1 t1, Table2 t2 WHERE t2.IdTable1 = t1.Id AND t2.Attribut = 5);
Existe t'il des moyens plus simples d'obtenir le même résultat, sans sous requêtes?
Ma façon de faire peut poser problème si on imagine que j'ai 20 sous requêtes à faire.
Merci pour votre aide
Robin
Partager