我有一个名为“明星”的表有两列名人,电影和其他表名为“发布”与两列名人,专辑。我想创建一个查询,向我显示一个带有树列的表格:名人,专辑数量,电影数量。查询SQL与两个表在一个,并显示总数
因此,我的想法是,我想显示已经播放到电影(从星表),并已制作了一个专辑(从发布表),并在电影和专辑数量以下的名人。
谢谢
我有一个名为“明星”的表有两列名人,电影和其他表名为“发布”与两列名人,专辑。我想创建一个查询,向我显示一个带有树列的表格:名人,专辑数量,电影数量。查询SQL与两个表在一个,并显示总数
因此,我的想法是,我想显示已经播放到电影(从星表),并已制作了一个专辑(从发布表),并在电影和专辑数量以下的名人。
谢谢
也许这是你在找什么:
SELECT movie.celeb, movieCount, albumCount
FROM
(SELECT celeb, count(1) movieCount
FROM star GROUP BY celeb) movie INNER JOIN
(SELECT celeb, count(1) albumCount
FROM releases GROUP BY celeb) album ON movie.celeb=album.celeb
它显示了事实上的所有CELEBS名单,我只想让那些曾在电影中播放过的人在同一时间制作了一张专辑。谢谢你 – user3325555
好的,我修改它,所以它只会显示那些记录在两个表中,使用'INNER JOIN'来代替。 –
再次感谢:) – user3325555
我假设你的意思是“件数”和“电影的数量”。如果这是正确的,这应该工作:
select celeb,
sum(case when num_type = 'movie' then num_recs else 0 end as num_movies,
sum(case when num_type = 'album' then num_recs else 0 end as num_albums
from (select celeb, count(*) as num_recs, 'movie' as num_type
from star
group by celeb
union
select celeb, count(*) as num_recs, 'album' as num_type
from releases
group by celeb) x
group by celeb
select s.celeb, count(distinct movie), count(distinct album)
from star s join releases r on r.celeb = s.celeb
group by s.celeb
如何栏中的两个“的专辑数量”有什么不同? –
我刚刚编辑的电影 – user3325555