Bonsoir,
Avant de vous présenter mon problème je vais planter le décor :
Carte(ID, nom, ...)
Couleur(ID, label)
EtreDeCouleur(IDCarte, IDCouleur)

Donc ici il s'agit de carte (Magic the gathering pour la petite histoire). Une carte possède 1 ou plusieurs couleurs.
Le problème : sélectionner toutes les cartes qui sont NOIR et BLANCHE.

j'ai pensé à :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SELECT a.ID,
       a.Nom,
       a.Edition As EditionID,
       GROUP_CONCAT(c.Label) As CouleurLabel,
       d.Label As EditionLabel
FROM 
	carte AS a,
	etredecouleur AS b,
	couleur AS c,
	edition As d
 WHERE
	a.Edition=d.ID
	AND a.ID=b.IDCarte
	AND b.IDCouleur=c.ID
        AND (2) IN (SELECT IDCouleur FROM etredecouleur WHERE IDCarte=a.ID)
        AND (1) IN (SELECT IDCouleur FROM etredecouleur WHERE IDCarte=a.ID)
GROUP BY ID
C'est bien ou pas bien ?
Merci d'avance.