Извиняюсь, если заголовок неоднозначный, но я не смог найти хороший способ обозначить эту проблему.
В моей базе данных есть таблица J, которая объединяет таблицы A и B. То есть, J имеет столбцы a_id и b_id, которые содержат идентификатор записей в A и B соответственно.В B также есть столбец «code»;в качестве примера, скажем, есть три записи с кодами «CC», «DD» и «EE».
Теперь я хочу написать запрос, в котором перечисляется, сколько А имеют каждый типкода в B (сколько A имеет «CC», сколько «DD» и сколько EE).
Я пишу этот запрос следующим образом и получаю следующий вывод (сфабрикованные данные, конечно - отсортировано по алфавитному порядку кода):
SELECT b.CODE as code, COUNT(*) AS COUNT FROM a, b, j
WHERE j.a_id = a.id AND j.b_id = b.id
GROUP BY b.CODE ORDER BY b.CODE
code | count
==============
CC | 5
DD | 10
EE | 2
Проблема возникает, когда я добавляю новую запись в B, скажем, с кодом 'FF'.Теперь у меня нет записей в J, которые указывают на код «FF».Таким образом, в выводе я хочу включить 'FF', но показать, что счетчик равен 0 (A не присоединены к 'FF').
code | count
==============
CC | 5
DD | 10
EE | 2
FF | 0
Однако, с моим текущим запросом, он не 't делает это и фактически пропускает все коды, где итоговое число равно 0.
Могут ли какие-либо мастера запросов помочь мне изменить мой запрос, включив счетчики для всех кодов, равны ли они нулю или нет?Это будет с благодарностью.