Ответ 1
Все, что вам не хватает, это предложение GROUP BY:
SELECT CompanyName, Count(ProductName)
FROM Suppliers LEFT JOIN Products
ON Suppliers.SupplierID = Products.SupplierID
GROUP BY CompanyName;
Использование LEFT {OUTER} JOIN означает, что если есть поставщики, которые не предоставляют какие-либо продукты, то соединение вернет набор значений NULL для столбцов, соответствующих таблице Products. Затем COUNT (ProductName) подсчитывает только количество ненулевых значений, что дает ответ 0 для компаний, которые не предоставляют никаких продуктов. Очень часто вы будете использовать обычный INNER JOIN, и тогда вы не увидите компаний, которые не предоставляют никаких продуктов.