2013-02-18 4 views
0

나는이 mysql 테이블을 가지고있다 (아래 그림 참조). 나는 ID로 그룹화 아이디의 선택하려는mysql - 가로로 행 선택

여기서
datakey = 년 이후 datavalue = 20110204

그래서 결국 : 및 datavalue = IS_MEMBER
과 동시에
datakey = 라벨 결과는 이어야합니다.

어떻게하면됩니까?

enter image description here

+1

하나 이상의 해결 방법을 포함하도록 게시물을 수정하십시오. 고맙습니다. – bernie

답변

2

조인하지 않고이 작업을 수행 할 수 있어야합니다. http://www.sqlfiddle.com/#!2/ca8d6/1

SELECT t.id 
FROM table_name t 
WHERE (datakey = 'Label' AND datavalue = 'is_member') OR (datakey = 'Since' AND datavalue = '20110204') 
GROUP BY t.id 
HAVING COUNT(datakey) = 2; 
+0

불행히도이 두 작품에 대한 쿼리를 필요로 불행히도 ... – Ash

+0

이 쿼리는 모두 반환됩니다. 쿼리에는 OR이있을 수 있지만 GROUP BY 및 HAVING을 사용하면이 쿼리는 원하는 결과를 정확히 반환합니다. 또는 나는 무엇인가 여기에서 멀리 바라보고 있냐? – Slowcoder

+0

+1 내게 맞는 것 같습니다. – scones

1

이 당신이 여기

SELECT 
    a.id 
FROM 
    some_table AS a 
    JOIN some_table AS b 
    ON 
     b.id = a.id 
WHERE 
    a.datakey = 'Label' 
    AND 
    a.datavalue = 'is_member' 
    AND 
    b.datakey = 'Since' 
    AND 
    b.datavalue = '20110204' 

그 분야 id 참조 동일한 데이터 집합을 가정이 필요한 것을 얻을 것이다.

+0

괜찮아요 그래서 조인이 유일한 방법입니다 ... 감사 – Ash

+0

그 특정 오타를 제거;) – scones