15

我在 MySql 公司有两个表:(cname,city)作品:(ename,cname,salary)

我想显示为每家公司工作的员工人数,即使该数字为零。

例如对于

Company : 
Microsoft Bangalore
IBM       NY

works : 
emp1 Microsoft 10000
emp2 Microsoft 90000

输出应该是:

Microsoft 2
IBM 0

但以下查询和其他类似查询仅打印那些至少有一名员工的公司:

Select count(*) from works natural join company group by company.cname

如果我使用外部联接,那么员工为零的公司仍将显示在一行中,因此该选项也无效。

怎么做?

4

3 回答 3

25

LEFT JOIN 的经典案例:

SELECT
  c.cname,
  COUNT(w.ename) wcount 
FROM
  company c
  LEFT JOIN works w ON c.cname = w.cname
GROUP BY
  c.cname
于 2009-04-13T09:44:27.487 回答
1

尝试

Select company.cname, count(work.id) from company left join work on ....=.... group by company.cname

在哪里填写“....”部分,然后将 work.id 更改为您的姓名

于 2009-04-13T09:42:47.773 回答
0

使用子查询还有另一种方法,这是我案例中的一个示例:

select count(`order_id`) as cnt
from (
    select `order_id` from `room_bookings`
    where `room_id` = 3 and `day_id` = 20180201 
    group by `order_id`
) as b;
于 2017-12-14T03:28:26.330 回答