Ответ 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
У меня есть две таблицы в 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
Если я использую внешнее соединение, тогда компании с нулевыми сотрудниками будут показывать в одной строке, так что опция также отсутствует.
Как это сделать?
Классический случай для 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
Try
Select company.cname, count(work.id) from company left join work on ....=.... group by company.cname
где вы заполняете части "...." и меняете work.id на имя
Есть другой способ сделать это с подзапросом, вот пример из моего дела:
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;