У меня проблема с SQL запросом (Oracle база данных).
У меня две таблицы. Одна таблица - «АВАРИИ», а другая - «ПРИЧИНЫ». Эта вторая таблица имеет несколько предопределенных значений по умолчанию.
- REASONS -
Reason 1
Reason 2
Reason 3
Reason 4
Теперь в таблицу АВАРИЙ мы вставляем некоторые несчастные случаи и причины из предыдущей таблицы, как показано ниже
- ACCIDENTS -
Accident 1 - Reason 1
Accident 2 - Reason 1
Accident 3 - Reason 4
Все I хотите получить количество аварий GROUP BY по всем 4 причинам, даже если причина не существует в таблице ACCIDENTS. В этом случае я хочу получить Count = 0, как показано ниже:
REASONS COUNT (of Accidents)
Reason 1 2
Reason 2 0
Reason 3 0
Reason 4 1
Безуспешно Я уже пробовал разные типы таблиц JOIN, но я не получаю результатов Причина 2 и Причина 3, потому что они не существует в таблице АВАРИЙ. Каждый раз результат:
REASONS COUNT (of Accidents)
Reason 1 2
Reason 4 1
Есть решения / мысли?
Заранее спасибо!
ОБНОВЛЕНИЕ!
Это запрос:
SELECT R.REASON_NAME AS REASON, COUNT(A.ID) AS COUNT_OF_ACCIDENTS
FROM ACCIDENTS A
RIGHT JOIN REASONS R ON R.ID = A.REASON_ID
WHERE EXTRACT(YEAR FPOM A.DATE_OF_ACCIDENT) = 2017
GROUP BY R.REASON_NAME
Если я удалю оператор WHERE, тогда я правильно получу все ПРИЧИНЫ, кроме «Где год в авариях» таблица обязательна.