2011-10-29 3 views
0

제품, 속성 및 세부 정보가 3 개 있다고 가정 해 보겠습니다.특정 속성으로 선택

제품

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

속성

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

자세한

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 

그리고 예를 들어 원하는 color = black, year = 2011 및 contrast ratio = 70 000 : 1 인 모든 제품을 선택하십시오. 이 예제에서 결과는 id = 2 인 제품이 될 것입니다. 그 대신 mysql 구문이 무엇입니까?

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?) 
... 

답변

0

사용

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

감사합니다! JOIN을 사용하는 방법을 몰랐습니다. –

+0

당신은 환영합니다 ... 도움이되었던 어떤 대답이라도 받아 들여서 upvote/mark하는 것을 잊지 마십시오. – Yahia