SQL с 0 счетами - PullRequest
       2

SQL с 0 счетами

0 голосов
/ 11 октября 2009

У меня есть следующий запрос sql:

SELECT DATE(procedures.start) date, name, COUNT(procedure_types.id) count
FROM `procedure_types`
  LEFT OUTER JOIN procedures on procedure_types.id = procedures.procedure_type_id
WHERE (DATE(procedures.start) = '2009-10-24')
GROUP BY DATE(procedures.start), procedure_types.id
ORDER BY DATE(procedures.start), procedure_types.id

Существуют две таблицы процедуры и тип_процедур. Процедура имеет значение method_type_id, которое указывает на таблицу

Запрос выполняется нормально, но я хочу перечислить значения method_types с count (0), даже если на эту дату на них не ссылались никакие процедуры.

Я знаю, что это как-то связано с объединениями. Кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 11 октября 2009

В вашем предложении WHERE не указаны значения процедурных типов без процедур. Вы должны переместить его в JOIN:

SELECT DATE(procedures.start) date, name, COUNT(procedure_types.id) count
FROM `procedure_types`
LEFT OUTER JOIN procedures on procedure_types.id = procedures.procedure_type_id
    AND DATE(procedures.start) = '2009-10-24'
GROUP BY DATE(procedures.start), procedure_types.id
ORDER BY DATE(procedures.start), procedure_types.id
1 голос
/ 11 октября 2009

Left Outer Join выберет все записи из таблицы Procedures и только совпадения из Procedure_Types. Вы хотите выбрать все записи из Procedure_Types, даже если в Procedures нет соответствующих записей, поэтому вам нужно Right Outer Join. См. this для получения дополнительной информации о JOINS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...