在MySQL中将行显示为列

时间:2012-07-01 03:21:00

标签: mysql pivot

我有一个networks表和一个groups表,它们由连接到网络的每个组链接。

每个群组都有一个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)

1 个答案:

答案 0 :(得分: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

然后使用paste special>复制并粘贴到Excel中转置。