分组多个表的方法

时间:2015-04-26 21:07:17

标签: sql database oracle select group-by

我有表格标题,工作室,艺术家和曲目。

我正在尝试从标题表中提取标题,从工作室表中提取工作室名称,从艺术家表中提取艺术家名称,从曲目表中提取标题的曲目数。

我已经加入了三个表,并使用以下查询从中提取数据。enter image description here

然后,为了得到每个相关标题的曲目数,我使用了以下查询:

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;

enter image description here

我的疑问是这种方法是否是从多个表中分组和提取数据的正确方法,还是它们在上述查询中的任何缺陷?我很感激您的意见。

非常感谢。

1 个答案:

答案 0 :(得分:1)

这种方法似乎是正确的(编辑:正如评论中所述,tracks.titleid子句中的group by除外),虽然是隐式连接(即from子句中有多个表)已经被弃用了好几年了。您可能应该使用显式连接:

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;