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 :

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>)
Le champs IdTable1 est une clé étrangère qui référence Table1.id.
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 :

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);
Dans mon exemple, la requete doit renvoyer l'élément de table1 ayant l'Id "1".
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