Отображение строк с количеством 0 с MySQL группы по

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

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

например для
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

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

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

12 голосов | спросил dharm0us 13 PMpMon, 13 Apr 2009 13:37:57 +040037Monday 2009, 13:37:57

3 ответа


0

Классический чехол для левого соединения:

SELECT
  c.cname,
  COUNT(w.ename) wcount 
FROM
  company c
  LEFT JOIN works w ON c.cname = w.cname
GROUP BY
  c.cname
ответил Tomalak 13 PMpMon, 13 Apr 2009 13:44:27 +040044Monday 2009, 13:44:27
0

Try

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

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

ответил Erik 13 PMpMon, 13 Apr 2009 13:42:47 +040042Monday 2009, 13:42:47
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;
ответил Vedmant 14 ThuEurope/Moscow2017-12-14T06:28:26+03:00Europe/Moscow12bEurope/MoscowThu, 14 Dec 2017 06:28:26 +0300 2017, 06:28:26

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132