我一直试图破解这个坚果几个小时但我无法弄清楚需要什么样的查询代码组合才能达到我想要的确切结果。
我有两张桌子:
音乐和播放列表
音乐的字段:
ID(主要),Track_Name,File_Path,Date_Added,艺术家,专辑
播放列表的字段:
PID,ID(与音乐的多对一关系),Number_of_Plays
我要做的是为音乐中的每个ID组合所有播放列表中的所有记录,然后对Number_of_Plays字段求和
据我所知:
Select Music.ID, Music.Track_Name, Playlists.PID From Music
Join Playlists On Music.ID = Playlists.ID
Where Playlists.ID In (
Select ID From Playlists
Group By ID
Having Count(Number_of_Plays) > 1)
唯一产生的是按照具有多个播放次数的记录的ID排序的列表。我已经能够找出问题后半部分的一部分,其中所有播放列表中的歌曲播放次数汇总在一起但不是如何不显示Number_of_Plays等于1的那些记录。这是我发现的查询所需内容的后半部分:
select PID, ID, sum(Number_of_Plays) As Total from Playlists
group by PID, ID LEFT(`ID`,11)
order by PID
这会根据ID的值组合Number_of_Plays字段,但不会删除只有1次播放的记录。在过去的45分钟里,我一直试图以某种方式将这两个查询结合起来,但除了语法错误消息之外我什么都没有。
答案 0 :(得分:0)
我设法弄明白了:
Select Music.ID, Music.track_name, Playlists.PI, sum(Playlists.Number_of_Plays) As Total_Plays From Music
Join Playlists On Music.ID = Playlists.ID
Group By Playlist.ID, LEFT('ID', 11) Having Count(Playlist.ID) > 1
这会生成一个结果集,该结果集具有按ID排序的记录,并且总计的游戏数量。