Вот мой простой вопрос SQL ...
У меня есть две таблицы:
Книги
-------------------------------------------------------
| book_id | author | genre | price | publication_date |
-------------------------------------------------------
Заказы
------------------------------------
| order_id | customer_id | book_id |
------------------------------------
Я хотел бы создать запрос, который возвращает:
--------------------------------------------------------------------------
| book_id | author | genre | price | publication_date | number_of_orders |
--------------------------------------------------------------------------
Другими словами, вернуть каждый столбец для ВСЕХ строк в Таблица книг вместе с вычисляемым столбцом с именем 'number_of_orders', который подсчитывает, сколько раз каждая книга появляется в таблице Orders. (Если книги нет в таблице заказов, книга должна быть указана в наборе результатов, но «number_of_orders» должно быть нулем .
Пока что я ' мы пришли к следующему:
SELECT
books.book_id,
books.author,
books.genre,
books.price,
books.publication_date,
count(*) as number_of_orders
from books
left join orders
on (books.book_id = orders.book_id)
group by
books.book_id,
books.author,
books.genre,
books.price,
books.publication_date
Это почти верно, но не совсем, потому что "number_of_orders" будет 1, даже если книга никогда не указана в таблице заказов. Более того, с учетом моего незнания SQL, я уверен, что этот запрос очень неэффективен.
Как правильно написать этот запрос? (Как бы то ни было, он должен работать в MySQL, поэтому я не могу использовать какие-либо другие специфические особенности производителя) .
Заранее спасибо!