У меня есть три таблицы: Book(Id), Topic(Id), BookTopic(BookId, TopicId).
Есть запрос который для каждого Topic возвращает количество Book в этом Topic:
SELECT T.Id, T.TopicName, count(BT.TopicId) AS 'BooksCount'
FROM Topic T, BookTopic BT
WHERE T.Id = BT.TopicId
GROUP BY T.Id, T.TopicName
Но есть проблема: если с топиком не связана ни одна книга то такой топик не возвращается. А я хотел что бы такой топик возвращался со значение BooksCount=0.
Как это можно сделать?
Ответ
Для этого следует воспользоваться LEFT JOIN
SELECT
T.Id, T.TopicName,
count(BT.TopicId) AS 'BooksCount'
FROM
Topic T
LEFT JOIN
BookTopic BT
ON
T.Id = BT.TopicId
GROUP BY
T.Id, T.TopicName
Комментариев нет:
Отправить комментарий