0

我不确定是否必须制作数据透视表或一些子查询才能获得所需的结果,但这是我拥有的表:

asset_id id 标题 title_type
34 1 集 1 5
34 2 TNS 4
34 3 WXPR 3
35 4 集 57 5
35 5 BLSH 4
35 6 WXRE 3
36 7 集 56 5
36 8 BLSH 4
36 9 WXRE 3

但这就是我想要的。每个 title_type 都在它自己的列中,并且 title_type 为 4 = BLSH 的 WHERE 标题。所以像这样:

资产 ID title_type 5 title_type 4 title_type 3
35 集 56 BLSH WXRE
36 集 57 BLSH WXRE
4

1 回答 1

1

真正的解决办法当然是改变你的数据库结构;-)

但是,您可以使用 JOIN 来获取所需的数据。在我的示例中,不涉及子选择:

SELECT 
  o.asset_id, 
  /* select the data from the self-joins */
  `5`.title AS title_type_5,
  `4`.title AS title_type_4,
  `3`.title AS title_type_3
FROM 
  foo o
/* use self-joins to combine data of multiple rows in a single row */
LEFT JOIN foo `3` ON `3`.title_type = 3 AND `3`.asset_id = o.asset_id
LEFT JOIN foo `4` ON `4`.title_type = 4 AND `4`.asset_id = o.asset_id
LEFT JOIN foo `5` ON `5`.title_type = 5 AND `5`.asset_id = o.asset_id
WHERE 
  o.title_type = "4" 
  AND o.title = "BLSH"

试试我在 SQLfiddle 上的例子

于 2012-05-04T06:45:26.043 回答