我有表格标题,工作室,艺术家和曲目。
我正在尝试从标题表中提取标题,从工作室表中提取工作室名称,从艺术家表中提取艺术家名称,从曲目表中提取标题的曲目数。
我已经加入了三个表,并使用以下查询从中提取数据。
然后,为了得到每个相关标题的曲目数,我使用了以下查询:
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;
我的疑问是这种方法是否是从多个表中分组和提取数据的正确方法,还是它们在上述查询中的任何缺陷?我很感激您的意见。
非常感谢。
答案 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;