我有一个数据库,公司有一定数量的插槽,这些插槽可以填充人员.. 我想查询我可以看到哪些公司仍有空位
这是我正在尝试的查询,但它给了我错误的结果。
select
name,
slots,
(select count(*) from persons) as persons
from companies
where city_id = 3
group by companies.id
这应该给我一张表格,里面有人员表中的插槽和公司的人数,但每次都会返回总人数。
这是结果
谢谢!
答案 0 :(得分:2)
就像@JoeTaras所说,你需要加入人和公司才能告诉/统计哪些人属于哪个公司。如果你不以某种方式加入他们,公司和个人将被独立对待和计算,这通常不是很有用。
确实可以使用不同的子查询 ,但它并不完全如何使用并且可能性能不如直线前进加入。
示例:
select
companies.id
companies.name,
companies.slots,
count(persons.id)
from companies
left outer join persons on companies.id = persons. ...
where companies.city_id = 3
group by companies.id, companies.name, companies.slots