mysql:同一查询中的count和内连接

时间:2017-05-10 07:27:06

标签: php mysql

我有三张桌子

users, jobs, proposals

users(id, username, address, email)

jobs(id, title, description, etc)

proposals(id, userid, jobid, date)

用户可以申请许多工作和

许多用户可以应用单个作业

投标表存储应用于哪个职位的人员的信息

select j.* from proposals p inner join jobs j on p.jobid = j.id where p.userid=$userid

上述查询列出了特定用户应用的所有作业。现在我想为每个作业展示有多少人在同一个查询中应用,是否可能

我试过

 select j.*, count(select * from proposals where jobid =j.id) as count from proposals p inner join jobs j on p.jobid = j.id where p.userid=$userid

select j.*, (select count(*) from proposals where jobid =j.id) as count from proposals p inner join jobs j on p.jobid = j.id where p.userid=$userid 

我知道上面的查询是错误的,但这会产生一些想法。

2 个答案:

答案 0 :(得分:1)

不是group by你在寻找什么?

select j.title, count(*) as number_of_applicants 
from jobs j join proposals 
on j.id = p.jobid 
group by p.jobid;

它可能无法正常工作,因为我没有数据来测试它,但尝试这条路!

答案 1 :(得分:1)

如果您想使用group by,还需要子查询,请尝试以下操作:

select j.*, t.cnt
from jobs j 
join proposals p on p.jobid = j.id
left join (
    select jobid, count(userid) as cnt
    from proposals
    group by jobid
) t on t.jobid = j.id 
where p.userid = $userid

注意: 此查询可能没有比上一次查询更好的效果。