对多个表进行分组的方法
Approach to group multiple tables
我有table的标题、工作室、艺术家和曲目。
我正在尝试从标题中提取标题 table、从工作室中提取工作室名称 table、从艺术家中提取艺术家姓名 table 以及从曲目中提取标题的曲目数table.
我加入了三个 table 并使用以下查询从中提取了数据。
然后为了获取每个关联标题的曲目数,我使用了以下查询:
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;
我的问题是这种方法是否是从多个 table 中分组和提取数据的正确方法,或者它们在上述查询中是否有任何缺陷?我将不胜感激。
非常感谢。
该方法似乎是正确的(编辑:如评论中所述,group by
子句中的 tracks.titleid
除外),尽管隐式连接(即 [=13= 中有多个表) ] 子句)已被弃用多年。您可能应该使用显式连接:
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;
我有table的标题、工作室、艺术家和曲目。
我正在尝试从标题中提取标题 table、从工作室中提取工作室名称 table、从艺术家中提取艺术家姓名 table 以及从曲目中提取标题的曲目数table.
我加入了三个 table 并使用以下查询从中提取了数据。
然后为了获取每个关联标题的曲目数,我使用了以下查询:
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;
我的问题是这种方法是否是从多个 table 中分组和提取数据的正确方法,或者它们在上述查询中是否有任何缺陷?我将不胜感激。
非常感谢。
该方法似乎是正确的(编辑:如评论中所述,group by
子句中的 tracks.titleid
除外),尽管隐式连接(即 [=13= 中有多个表) ] 子句)已被弃用多年。您可能应该使用显式连接:
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;