Вот мой простой вопрос SQL ...
У меня есть две таблицы:
Книги
-------------------------------------------------------
| book_id | author | genre | price | publication_date |
-------------------------------------------------------
Заказы
------------------------------------
| order_id | customer_id | book_id |
------------------------------------
I 'Я хотел бы создать запрос, который возвращает:
--------------------------------------------------------------------------
| book_id | author | genre | price | publication_date | number_of_orders |
--------------------------------------------------------------------------
Другими словами, возвращайте каждый столбец для ALL строк в таблице Books вместе с вычисляемым столбцом с именем 'number_of_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, поэтомуЯ не могу использовать другие функции, специфичные для поставщика).
Заранее спасибо!