2011-10-29 8 views
0

Disons que nous avons 3 tables: les produits, les attributs et les détails.Sélectionnez avec des attributs spécifiques

produits

id name price 
1 pr1 120 
2 pr2 140 
3 pr3 200 
4 pr4 165 

attributs

id name 
1 color 
2 guarantee 
3 resolution 
4 year 
5 contrast ratio 

détails

id productId attributeId value 
1 1   1   grey 
2 1   2   yes 
3 2   1   black 
4 2   4   2011 
5 2   5   70 000:1 
6 4   2   no 

et que vous voulez par exemple sélectionner tous les produits avec couleur = noir, année = 2011 et rapport de contraste = 70 000: 1. Dans cet exemple, le résultat serait produit avec id = 2. Quelle serait la syntaxe mysql pour cela?

SELECT * FROM products, details WHERE products.id = details.productId 
AND details.attributeId = 1 (For the first attribute) 
AND details.attributeId = 4 (For the second and third attribute?) 
... 

Répondre

0

Utilisez

SELECT * 
FROM products p 
INNER JOIN (SELECT * FROM details d WHERE d.attributeId = 1) d1 ON p.ID = d1.productid 
INNER JOIN (SELECT * FROM details d WHERE d.attributeId = 4) d4 ON p.ID = d4.productid 
INNER JOIN (SELECT * FROM details d WHERE d.attributeId = 5) d5 ON p.ID = d5.productid 
WHERE 
d1.value = 'black' AND 
d4.value = '2011' AND 
d5.value = '70 000:1' 
+0

Merci! Je ne savais pas comment utiliser JOIN. –

+0

vous êtes les bienvenus ... s'il vous plaît ne pas oublier de upvote/marquer comme accepté toute réponse qui était d'aide ... – Yahia

Questions connexes