Подтвердить что ты не робот

Отображение строк с count 0 с помощью mysql group by

У меня есть две таблицы в MySql Компания: (cname, city) работы: (ename, cname, зарплата)

Я хочу отобразить число сотрудников, работающих для каждой компании, даже если это число равно нулю.

например. для

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

Если я использую внешнее соединение, тогда компании с нулевыми сотрудниками будут показывать в одной строке, так что опция также отсутствует.

Как это сделать?

4b9b3361

Ответ 1

Классический случай для 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

Ответ 2

Try

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

где вы заполняете части "...." и меняете work.id на имя

Ответ 3

Есть другой способ сделать это с подзапросом, вот пример из моего дела:

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;