我有一个数据库,其中一个公司有一定数量的空位,这些空位可以填充人员。.我想查询一下,看看哪些公司还有空位
这是我正在尝试的查询,但它给了我错误的结果。
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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句