我有三张桌子
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
我知道上面的查询是错误的,但这会产生一些想法。
答案 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
注意: 此查询可能没有比上一次查询更好的效果。