2012-07-01 3 views
2

나는 networks 테이블과 groups 테이블을 가지고 있으며 이들은 네트워크에 연결된 각 그룹별로 연결되어 있습니다.MySQL에서 행을 열로 표시

각 그룹은 type이고 일부 그룹은 special type입니다.

해당 그룹 유형의 인원 수를 나타내는 열로 표시되는 특수 유형 인 각 그룹을 표시하는 쿼리를 실행하려고합니다.

그게 가능합니까? 각 그룹 유형이 열 머리글로 표시되도록합니다.

데이터 :

Networks 

id | name 
1 | networka 
2 | networkb 


groups 

id | name | type | network 
1 | groupa | 1 | 1 
2 | groupb | 2 | 2 
3 | groupc | 3 | 1 

type 

id | name  | special 
1 | speciala | 0 
2 | specialb | 1 

나는 현재 실행중인 :

특수한 유형의 그룹 목록을 반환
SELECT Name FROM (

    SELECT groups.Name FROM groups INNER JOIN group_types on groups.Type = group_types.Id WHERE group_types.SpecialType = 1 Group by groups.Type 
) as s 

. 그러나 내가 group_members 테이블을 가지고 있다고 가정하면 해당 그룹의 구성원 수와 같은 더 많은 정보를 얻고 싶다면 groups 테이블이나 해당 유형의 그룹 수를 다시 연결하십시오.

내가 현재이에게 행 수 :

name 
specialb 

을하지만 실제로 내가 제대로 원하는 것을 이해하고 있습니다 경우 다시

specialb 
(sub query to get more values for that special group) 
+3

누락 된 태그는 '피봇'입니다. @Dani, 테이블의 스키마와 샘플 레코드를 지정해야합니다. –

+0

이 솔루션이 유용 할 수 있습니다. http://www.artfulsoftware.com/infotree/queries.php#78 –

+0

미안하지만 피벗에 대해 알지 못했지만 실제로 열 형식으로 표시 할 데이터가 필요하지 않고 대신에있을 수 있습니다. 행 형식 다른 열은 해당 행과 관련하여 정보를 갖게됩니다. – Dani

답변

0

을 반환하려면,이 쓰기 :

select g.name, t.name, count(*) 
from groups as g left join group_members as gm on gm.group=g.id left join types as t on t.id=g.type 
group by g.name, t.name 

다음 복사하여 붙여 넣기 특수 붙여 넣기를 사용하여 Excel로 붙여 넣습니다.