Не берите идентификатор клиента из таблицы заказов. Возьми это со стола клиентов. Если вы это сделаете, это может работать в вашей базе данных:
SELECT c.CustomerID, c.CompanyName, c.ContactName, SUM(od.Quantity)
FROM OrderDetails od INNER JOIN
Customers c
ON od.CustomerID = c.CustomerID
GROUP BY c.CustomerID
ORDER BY c.CustomerID ASC;
Обратите внимание, что в предложении WHERE
не нужно повторять условия в предложении ON
.
Ваша версия не будет работать в стандартном SQL, потому что od.CustomerId
не уникален в OrderDetails
. Многие базы данных не поддерживают это, поэтому в них вам нужны дополнительные столбцы:
SELECT c.CustomerID, c.CompanyName, c.ContactName, SUM(od.Quantity)
FROM OrderDetails od INNER JOIN
Customers c
ON od.CustomerID = c.CustomerID
GROUP BY c.CustomerID, c.CompanyName, c.ContactName
ORDER BY c.CustomerID ASC;
Несмотря на это, намного, намного лучше взять все столбцы из одной таблицы. Это позволило бы оптимизатору SQL использовать индексы для Customers
.