Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 多表分组方法_Sql_Database_Oracle_Select_Group By - Fatal编程技术网

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的询问而没有注意到。编辑和固定。谢谢