2012-05-16 2 views
1

나는 이것이 꽤 쉬운 대답이라는 것을 확신하지만, 대답은 완전히 내 마음을 미끄러지고있다.간단한 MySQL 쿼리 - 주위 테이블 형식 변경

event_id | elem_id | value 
    1   1  Value 1 
    1   2  Value 2 
    2   1  Value 3 
    2   2  Value 4 

EVENT_ID 및 elem_id 모두 미정 숫자와 무한한 가능성을 가지고

나는 현재와 같은 포맷 된 데이터베이스 테이블을 가지고있다.

나는 같은 포맷 할 데이터를 얻을 수 EVENT_ID 1을 기준으로 예를 조회 할 방법이 elem_id을 알고

event_id | 1 |  2 
    1  Value 1 Value 2 

아직 I 수> = N 그래서 가능성이있을 수 50 elem_id입니다 여전히 그 형식의 데이터가 필요합니다.

내가 말한 것처럼 나는 내 인생을 위해 그런 방식으로 쿼리를 계산할 수 없다. 어떤 도움 이라든지 대단히 감사 할 것입니다.

+0

다른 RDBMS와는 달리, MySQL은 이런 종류의 피벗 동작을 기본으로 지원하지 않습니다 (개발자가 의도적으로 그러한 것들이 더 많이 속해 있다고 느끼기 때문에). 프레젠테이션 레이어에서 적절하게). 응용 프로그램에서 이러한 조작을 수행하십시오. – eggyal

+0

어 .. 너무 나 빠졌어. – Peter

답변

1

시도 다음 또한

SELECT 
    `event_id`, 
    (SELECT t2.`value` FROM table t2 WHERE t2.`event_id` = t1.`event_id` AND t2.`elem_id` = 1), 
    (SELECT t3.`value` FROM table t3 WHERE t3.`event_id` = t1.`event_id` AND t3.`elem_id` = 2) 
FROM `table` t1 GROUP BY `event_id`; 

서로 다른 방법을 사용하여, 2 개의 셀

SELECT `event_id`, GROUP_CONCAT(`elem_id`), GROUP_CONCAT(`value`) FROM `table` GROUP BY `event_id`; 

쉼표로 구분 형식 elem_ids 및 값을 얻고는 다음 구문과 세퍼레이터를 변경할 수있다 : GROUP_CONCAT(field SEPARATOR '::')

+0

하위 쿼리를 JOIN으로 바꿀 수도 있습니다 – Electronick