我有一个数据库,其中一家公司有一定数量的空位,这些空位可以容纳人员.. 我想做一个查询,我可以看到哪些公司仍有空缺
这是我正在尝试的查询,但它给了我错误的结果。
select
name,
slots,
(select count(*) from persons) as persons
from companies
where city_id = 3
group by companies.id
这应该给我一个带有槽位的表,以及人员表中该公司的人员数量,但它每次都会返回人员总数。
这就是结果
谢谢!
最佳答案
就像 @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
关于mysql - SQL Group by Subquery 被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26671269/