2014-02-18 41 views
0

我有一个名为“明星”的表有两列名人,电影和其他表名为“发布”与两列名人,专辑。我想创建一个查询,向我显示一个带有树列的表格:名人,专辑数量,电影数量。查询SQL与两个表在一个,并显示总数

因此,我的想法是,我想显示已经播放到电影(从星表),并已制作了一个专辑(从发布表),并在电影和专辑数量以下的名人。

谢谢

+0

如何栏中的两个“的专辑数量”有什么不同? –

+0

我刚刚编辑的电影 – user3325555

回答

0

也许这是你在找什么:

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 
+0

它显示了事实上的所有CELEBS名单,我只想让那些曾在电影中播放过的人在同一时间制作了一张专辑。谢谢你 – user3325555

+0

好的,我修改它,所以它只会显示那些记录在两个表中,使用'INNER JOIN'来代替。 –

+0

再次感谢:) – user3325555

0

我假设你的意思是“件数”和“电影的数量”。如果这是正确的,这应该工作:

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 
0
select s.celeb, count(distinct movie), count(distinct album) 
from star s join releases r on r.celeb = s.celeb 
group by s.celeb