Permintaan Anda hampir benar dan ini adalah cara yang tepat untuk melakukannya (dan paling efisien)
SELECT books.*, count(orders.book_id) as number_of_orders
from books
left join orders
on (books.book_id = orders.book_id)
group by
books.book_id
COUNT(*)
dapat menyertakan nilai NULL dalam hitungan karena menghitung semua baris, sedangkan COUNT(orders.book_id)
tidak karena mengabaikan nilai NULL di bidang yang diberikan.