2014-01-20 2 views
1
SELECT attribute_value.value 
FROM attribute_value 
INNER JOIN attributes ON attributes.id=attribute_value.attribute_id 
WHERE attributes.attribute IN (colour, size); 

나는이 일을 제대로하지 않지만, 내가 얻는 오류는 # 1054입니다 - 알 수없는 ' where 절 '"JOIN", "WHERE"및 "IN"사용 (mysql + php)

관련 속성의 값을 가져 오려고합니다. 현재 속성이 "IN"절에 명시되어 있습니다하지만이 같은 연관 배열 사용하는 방법을 알고 싶어 :

Array([attributes] => Array ([0] => Colour [1] => Size) 

ATTRIBUTE_VALUE을
______________________________ 
| attribute_id | value | 
------------------------------ 
| 1    | Red  | 
| 1    | Blue  | 
| 2    | Large | 

속성

분명히하기 위해 여러 속성이 게시되고 이러한 속성 만 사용하여 attribute_value의 값을 가져옵니다. 여기서 attribute의 속성 ID는 attribute_value의 attribute_id와 같습니다.

+6

이'attributes.attribute IN ('color', 'size')'를 사용해보십시오. – user2989408

+1

'colour'와'size'는 실제로 문자열 상수입니다. 따옴표가 없다면, mysql은 그것들을 필드 이름으로 해석 할 것이다. – SirDarius

답변

7

IN에 문제가 있습니다. 작은 따옴표 사이에 문자열을 사용해야합니다.

SELECT attribute_value.value 
FROM attribute_value 
INNER JOIN attributes ON attributes.id=attribute_value.attribute_id 
WHERE attributes.attribute IN ('Colour', 'Size'); 
2

attributes.attribute IN ('colour', 'size')에서 이것을 시도하십시오.