2014-04-18 7 views
0

이 데이터 세트는 MySQL에서 저장해야합니다.이 데이터는 단일 행으로 병합해야하지만이 행의 수는 다양합니다.MySQL - 여러 행을 하나의 행으로 묶기

Id  Name     Pre/Post Attempt  Other Data 
--  --------    -------- -------  ---------- 
1  James Owens    Pre   1   blah 
1  James Owens    Post  1   blah 
1  James Owens    Post  2   blah 

2  Derek Williams   Post  1   blah 
2  Derek Williams   Post  2   blah 
2  Derek Williams   Post  3   blah 

3  Sean Parker    Pre   1   blah 

4  Miles Taylor    Pre   1   blah 
4  Miles Taylor    Post  1   blah 
4  Miles Taylor    Post  2   blah 
4  Miles Taylor    Post  3   blah 
4  Miles Taylor    Post  4   blah 

시도의 최대 수는 4 것 내가 이런 식으로 (또는이 가까운 일) 결국 할 데이터 싶습니다 :

Id  Name      Pre   Post  Post  Post  Post  Other Data 
--  -------------   ---   ----  ----  ----  ----  ---------- 
1  James Owens    1   1   2       blah 
2  Derek Williams      1   2   3     blah 
3  Sean Parker    1             blah 
4  Miles Taylor    1   1   2   3   4  blah 

내가 당신을 알고를 '여기 예제 "너 무슨 짓을 한거야?" - 어디서부터 시작해야할지 몰라서 아무 것도 시도하지 않았습니다.

누군가 나를 올바른 방향으로 안내 할 수 있습니까?

+0

원하는 데이터를 단순화 할 수 있습니까? 지금은 가변 열을 가질 수있는 쿼리를 원하는 것처럼 보입니다. 나는이 SQL Server에서 동적 SQL을 사용할 수 있지만 mysql에 그렇게 확신 knwo. 어쨌든 당신이하는 일이 더 잘될 수 있다고 들리는가? 두 열을 미리 게시하고 게시 할 수 없으며 시도 횟수가 있습니까? 열의 값이 시도 횟수입니까? 또는 그들은 요약 될 필요가 있습니까? 예 : 데릭 윌리엄스 총 게시물 시도 3인가요? –

+0

예, 열의 숫자는 시도 횟수입니다. 아니요, 그들은 합산 될 필요가 없습니다. VIEW를 사용하여 데이터를 단순화하는 방법에 대해 생각했지만 확실하지 않았습니다. –

+0

동적 인 열 수가 필요합니까? 두 개의 기둥 만 가질 수는 없습니까? 이 쿼리는 훨씬 간단합니다. –

답변

0

Ryan이 주석에서 언급했듯이 사전 및 사후 시도 횟수를 저장하는 열이 두 개일 수 있습니다. 이를 통해 다음을 수행 할 수 있습니다.

select distinct(tbl.id), name, pre_count.count, post_count.count, other_data 
from `tbl` left join (select id, count(*) as count 
         from `tbl` where pre_post = 'pre' group by id) as pre_count 
         on tbl.id = pre_count.id 
      left join (select id, count(*) as count 
         from `tbl` where pre_post = 'post' group by id) as post_count 
         on tbl.id = post_count.id 
+0

Yeap ... note 위의 구문보다 읽기 쉽도록 조인을 수행합니다. –

+0

필자의 상황에 적응하기 위해 필요한 변경 작업을 수행했지만 쿼리가 제대로 실행되지만 0 개의 레코드가 나타납니다. 뭐가 잘못 됐어? –

+0

쿼리는 사전 및 게시를위한 시도가 적어도 하나만있는 경우에만 작동합니다. 해당 항목을 포함 시키려면 왼쪽 조인을 사용하십시오. –

관련 문제