2014-07-16 2 views
0

MySQL 데이터베이스에서 다음과 같은 문제가 있습니다. 여러 유형의 값이 하나의 값에 연결된 조인 테이블이 있다고 가정합니다. 유형 수가 수정됩니다. 이런 식으로 뭔가 :MySQL : 값을 여러 필드로 목록으로 그룹화

ID|Type A|Type B| 
----------------- 
1 | Z,X | Y | 
2 | Z,X | NULL | 

그것이 가능 : 나는 루프없이 다음과 같은 결과를 생성해야

ID|Type|Value| 
--------------- 
1 | A | Z | 
1 | A | X | 
1 | B | Y | 
2 | A | Z | 
2 | A | X | 

? 내가 만든 것은 SQL이 GROUP_CONCAT 명령을 사용하여 선택이지만, 다른 것을 생산 :

select ID, TYPE, group_concat(VALUE) groups from MYTABLE group by ID, TYPE; 

을 그리고

ID|TYPE|groups| 
----------------- 
1 | A | Z,X | 
1 | B | Y | 
2 | A | Z,X | 

생산 그리고 나는 무엇입니다 .... 앞으로 단계 수 없습니다 잘못하고있는거야? 도와주세요!

+0

는 응용 프로그램 수준에서 데이터 표시의 문제를 처리 고려 :

는이 같은 각 유형의 열, 뭔가있어되도록 GROUP_CONCAT 내부의 CASE 표현을 사용/presentation layer - 당신이 가지고 있다고 가정하십시오. 내 말과 대략적인 근사값으로, MySQL에는 어떤 GROUP_CONCAT가 답이 될까요? ;-) – Strawberry

답변

1

이렇게하면 VALUE 열의 모든 값이 하나의 열에 만 제공되지만 각 TYPE 값에 대해 하나씩 두 개의 열을 찾고 있습니다.

SELECT 
    ID, 
    GROUP_CONCAT(CASE WHEN TYPE = 'A' THEN VALUE END) AS 'Type A', 
    GROUP_CONCAT(CASE WHEN TYPE = 'B' THEN VALUE END) AS 'Type B' 
FROM yourtable 
GROUP BY ID;