2012-07-30 2 views
0

Table_A가 관련 을 ENTITY_ID 관련있는 Table_B = 1왼쪽 동일한 테이블을 다른 값으로 결합합니까?

은 attribute_id ENTITY_ID있다 Table_B

을 ENTITY_ID = 2

,369은 attribute_id
SELECT Table_B.value 
    FROM Table_A 
    LEFT JOIN Table_B 
    ON Table_A.entity_id = Table_B.entity_id 
    WHERE Table_A.date = '2012-7-30 00:00:00' 
    AND Table_B.attribute_id = 1 

attribute_id = 1과 attribute_id = 2를 하나의 쿼리로 가져오고 싶습니다.

+0

많은 관계가 있습니까? 두 속성이 같은 열에 있다는 뜻입니까? (즉, differents 행)? 이 경우 Table_b.Value 값이 표시됩니까? 어느 행 에서요? –

답변

1

두 번째로 Table_B에 가입하고 AS를 사용하여 새 이름 (별칭)을 부여 할 수 있습니다.

SELECT Table_B.value, Table_B2.value 
FROM Table_A 
LEFT JOIN Table_B 
ON Table_A.entity_id = Table_B.entity_id 
LEFT JOIN Table_B AS Table_B2 
ON Table_A.entity_id = Table_B2.entity_id 
WHERE Table_A.date = '2012-7-30 00:00:00' 
AND Table_B.attribute_id = 1 
AND Table_B2.attribute_id = 2 

당신은 또한 당신이있어 무엇을 좀 명확하게 만들기 위해 속성 기준을 이동할 수에 :

SELECT Table_B.value, Table_B2.value 
FROM Table_A 
LEFT JOIN Table_B 
ON Table_A.entity_id = Table_B.entity_id AND Table_B.attribute_id = 1 
LEFT JOIN Table_B AS Table_B2 
ON Table_A.entity_id = Table_B2.entity_id AND Table_B2.attribute_id = 2 
WHERE Table_A.date = '2012-7-30 00:00:00' 
+0

이러한 비교 중 하나가 'Table_B2.entity_id'가 아니어야합니까? –

+0

예 - 잘 잡으세요! 결정된. – Andrew

+0

내가이 1 비트 나중에 감사 할 것 인 것은 멋지게 보인다!! –

1

그럼 당신은 두 가지 쉬운 방법

select 
    t1.entity_id, 
    t2.attribute 
from t1 
left join t2 on t2.entity_id = t1.entity_id; 
으로 간단하게 할 수 있습니다

또는

select 
    t1.entity_id, 
    group_concat(t2.attribute) as Attr 
from t1 
left join t2 on t2.entity_id = t1.entity_id 
group by t1.entity_id 
0

왜 attribute_id = 1과 2를 모두 얻고 싶다면 OR을 사용하지 않습니까?

SELECT Table_B.value 
FROM Table_A 
LEFT JOIN Table_B 
ON Table_A.entity_id = Table_B.entity_id 
WHERE Table_A.date = '2012-7-30 00:00:00' 
AND (Table_B.attribute_id = 1 OR Table_B.attribute_id = 2) 
관련 문제