Php 我可以使用2组concat组合吗?还是应该使用子查询
我有一个私人项目,我在建我的家。我想知道如何进行查询。我有5张表格: 专辑 光盘格式 标签 唱片 (一张相册包含多张光盘,一张光盘只属于一张相册。一张光盘只有一种格式) 相册标签 (一个相册有多个唱片标签,一个唱片标签可以在多个相册中) 比如说精选专辑1,我希望看到的结果是:Php 我可以使用2组concat组合吗?还是应该使用子查询,php,mysql,sql,group-concat,Php,Mysql,Sql,Group Concat,我有一个私人项目,我在建我的家。我想知道如何进行查询。我有5张表格: 专辑 光盘格式 标签 唱片 (一张相册包含多张光盘,一张光盘只属于一张相册。一张光盘只有一种格式) 相册标签 (一个相册有多个唱片标签,一个唱片标签可以在多个相册中) 比如说精选专辑1,我希望看到的结果是: albumid name format label ------------------------------------------- 1 name1 CD, DVD SON
albumid name format label
-------------------------------------------
1 name1 CD, DVD SONY, PHANTOM
我尝试过使用group concat,但它只适用于“格式”。一旦我为标签添加了另一个组concat,它就不起作用了。我曾读到,也许解决方案是使用子查询,但我尝试了每种组合,因为我是一个新手,所以没有太多的成功。
我可以使用两种组合的组\u concat
?如果没有,我该怎么办
谢谢,Marco您需要加入所有表。使用
GROUP\u CONCAT
(使用DISTINCT
仅选择唯一值),并按albumID对其进行分组
SELECT a.albumID, a.Name,
GROUP_CONCAT(DISTINCT c.format) formats,
GROUP_CONCAT(DISTINCT e.`label`) labels
FROM album a
INNER JOIN album_disc b
ON a.albumID = b.albumid
INNER JOIN discformat c
ON b.formatid = c.formatID
INNER JOIN album_label d
ON a.albumid = d.albumID
INNER JOIN label e
ON e.labelid = d.labelid
WHERE a.albumID = 1 // remove this line if you want to select all records
GROUP BY a.albumID, a.Name
labelid label
------------------------
1 SONY
2 EMI
3 COLUMBIA
4 PHANTOM
5 UNIVERSAL
discid albumid formatid
---------------------------
1 1 1
2 1 2
3 7 3
4 5 1
albumid labelid
-----------------
1 1
1 4
5 5
4 1
albumid name format label
-------------------------------------------
1 name1 CD, DVD SONY, PHANTOM
SELECT a.albumID, a.Name,
GROUP_CONCAT(DISTINCT c.format) formats,
GROUP_CONCAT(DISTINCT e.`label`) labels
FROM album a
INNER JOIN album_disc b
ON a.albumID = b.albumid
INNER JOIN discformat c
ON b.formatid = c.formatID
INNER JOIN album_label d
ON a.albumid = d.albumID
INNER JOIN label e
ON e.labelid = d.labelid
WHERE a.albumID = 1 // remove this line if you want to select all records
GROUP BY a.albumID, a.Name