2017-06-18 92 views
-2

我新的SQL,我有两个表RACER和赞助商, RACER表中有这些列寻找伯爵

RACER_NAME, 
SPONSOR_ID 
RACER_ID- Primary KEY 

SPONSOR table has these columns 

SPONSOR_ID, 
SPONSOR_NAME 

现在我想找到赞助商的名称和节数的赛车手与该赞助商相关联。

这里是我的尝试:

select s.sponsor_name , (select count(*) from racer r) where INNER JOIN s.sponsor_id = r.sponsor_id 
+0

为什么不能按照下面的教程使用'JOIN'? – Ravi

+0

试过但没有得到如何获得赛车手总数? – user7076183

+0

然后,发表你试过的东西 – Ravi

回答

0

你需要了解,如何JOIN作品和它的语法。

select s.sponsor_name, count(*) as total_racer 
from 
racer r inner join sponsor s 
on r.sponsor_id=s.sponsor_id 
group by r.sponsor_id 

你需要指定FROM子句两个表,你人失踪。

0

你可以使用一个连接(左连接,如果没有人赞助商有赛车手),并使用GROUP BY获得无子查询的结果和计数

select s.sponsor_name , count(*) 
    from SPONSOR s r 
    left JOIN racer r s.sponsor_id = r.sponsor_id 
    GROUP BY s.sponsor_name 
0

你的版本,使用子查询是合理的,特别是因为在MySQL可以比对应的GROUP BY查询具有更好的性能。但是,它需要是一个相关的子查询。这看起来像:

select s.*, 
     (select count(*) 
     from racer r 
     where s.sponsor_id = r.sponsor_id 
     ) as cnt 
from sponsor s; 

换句话说,选择要么JOIN方法或子查询方法,但不能同时为同一值。