Sql 多表分组方法
我有书名、工作室、艺术家和曲目 我试图从标题表中提取标题,从工作室表中提取工作室名称,从艺术家表中提取艺术家名称,从曲目表中提取标题的曲目数 我已经连接了三个表,并使用下面的查询从中提取了数据 然后,为了获得每个相关标题的曲目数量,我使用了以下查询:Sql 多表分组方法,sql,database,oracle,select,group-by,Sql,Database,Oracle,Select,Group By,我有书名、工作室、艺术家和曲目 我试图从标题表中提取标题,从工作室表中提取工作室名称,从艺术家表中提取艺术家名称,从曲目表中提取标题的曲目数 我已经连接了三个表,并使用下面的查询从中提取了数据 然后,为了获得每个相关标题的曲目数量,我使用了以下查询: select t.title,s.studioname,a.artistname,count(tracks.titleid) as NumOfTracks from titles t, studios s, artists a,tracks wh
select t.title,s.studioname,a.artistname,count(tracks.titleid) as NumOfTracks
from titles t, studios s, artists a,tracks where (t.studioid = s.studioid) and (t.artistid = a.artistid) and (tracks.titleid = t.titleid)
group by t.title,s.studioname,a.artistname,tracks.titleid;
我的问题是,这种方法是否是从多个表中分组和提取数据的正确方法,或者它们在上述查询中是否存在任何缺陷??我将感谢你的意见
非常感谢。尽管隐式联接(即在from
子句中有多个表)已经被弃用了好几年,但这种方法似乎是正确的(编辑:如注释中所述,除了tracks.titleid
在group by
子句中)。您可能应该使用显式联接:
SELECT t.title,
s.studioname,
a.artistname,
COUNT(tracks.titleid) as NumOfTracks
FROM titles t
JOIN studios s ON t.studioid = s.studioid
JOIN artists a ON t.artistid = a.artistid
JOIN tracks ON tracks.titleid = t.titleid
GROUP BY t.title, s.studioname, a.artistname;
我认为您可能需要将tracks.titleid从GROUP BY子句中排除?@user2793228再次查看-是的。太专注于OP的询问而没有注意到。编辑和固定。谢谢