2011-01-30 8 views
2

잠시 동안 검색 한 결과 내 문제에 대한 답을 찾을 수 없습니다. 나는이 보이는 테이블이 있습니다고유 한 값을 열로 사용하여 MySQL보기 만들기

date  name status 
2011-01-01 m1 online 
2011-01-01 m2 offline 
2011-01-01 m3 online 
2011-01-02 m1 offline 
2011-01-02 m2 offline 
2011-01-02 m3 online 

내가 그 것이다 모습처럼보기를 만들려을 다음과 같이 '이름'열에서 값이 별개이며이

date   m1  m2  m3 
2011-01-01 online offline online 
2011-01-02 offline offline online 

고정 된 수의 값, 예를 들어 20 개의 다른 값 (m1 ... m20)이지만 시간이 갈수록 증가 할 수 있습니다. 이처럼보기를 만들 수 있습니까? 그렇다면 어떻게?

감사합니다.

CREATE VIEW yourview AS 
SELECT 
    date, 
    MAX(IF(name = 'm1', status, NULL)) m1, 
    MAX(IF(name = 'm2', status, NULL)) m2, 
    MAX(IF(name = 'm3', status, NULL)) m3 
FROM yourtable 
GROUP BY date; 

뷰 : 컬럼의 변수 번호

답변

3

결과 세트는 정말 다음을 수행하려는 경우 그러나 당신은 GROUP BY, MAXIF의 조합을 사용할 수 있습니다, 일반적으로 나쁜 생각입니다 당신이 원하는, 당신이 데이터를 제공합니다 :

 
date  m1  m2  m3  
2011-01-01 online offline online 
2011-01-02 offline offline online 

주 당신은 V를 다시 만들어야합니다 그래서 열 변수 번호가있는 뷰를 만들 수 없습니다 것을 열의 수가 변경 될 때마다 봅니다.

+0

포인터 주셔서 감사합니다. – kelly

+0

MAX() 사용의 요지는 무엇입니까? 그것은 MAX() 없이도 계속 작동하지 않아야합니까? –

관련 문제