gpt4 book ai didi

mysql - 过滤 mysql 数据透视查询而不丢失所选记录的过滤字段

转载 作者:行者123 更新时间:2023-11-30 00:11:45 24 4
gpt4 key购买 nike

我有一个数据透视表,可将乐谱标题链接到部分列表(特定乐器的音乐)

例如,一首歌可能有主音吉他、键盘和鼓,正如您所期望的那样,数据透视表有两个指向相应歌曲部分的歌曲条目...

我有一个查询,将歌曲的所有部分名称连接到一个字段中所以你会在一个字段中得到“主音吉他、键盘、鼓”

这是查询:

select 
songs.title,
group_concat(distinct songpart.partName separator ', ') as parts
from
songpart,
songpartpivot,
songs
where
songs.id=songpartpivot.songid and
songpartpivot.partid=songpart.id
group by
(songs.id)

这正是我想要的,但是我在过滤查询时遇到了麻烦,例如我可能想要所有带有鼓声部分的歌曲,只需添加

and songpartpivot.partid = ?

WHERE 子句实际上会选择具有特定属性的所有歌曲,但是我只能在连接字段中选择(单个)部分,因此应该在哪里

Lead Guitar, Bass Guitar, Drums

我只看到

Bass Guitar

选择所有带有低音吉他声部的歌曲时

如何在数据透视表或歌曲表的其他字段中选择值,同时仍然能够查看所选记录的所有部分...

根据要求:

mysql> describe songs;
+-------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| title | text | NO | | NULL | |
+-------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

mysql> describe songpartpivot;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| songid | int(11) | NO | | NULL | |
| partid | int(11) | NO | | NULL | |
+--------+---------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> describe songpart;
+----------+---------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+---------+------+-----+---------+----------------+
| id | int(11) | NO | MUL | NULL | auto_increment |
| partName | text | NO | | NULL | |
+----------+---------+------+-----+---------+----------------+
2 rows in set (0.00 sec)

最佳答案

您可能需要聚合后过滤

group by 
(songs.id)
having SUM(songpartpivot.partid = ?)>0

关于mysql - 过滤 mysql 数据透视查询而不丢失所选记录的过滤字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com