2013-04-12 4 views
-1

Вот мои таблицы:LEFT JOIN 2 таблиц с использованием SUM & GROUP BY

Table: Catalog     Table: Inventory 
--------------     ---------------- 
catalogId  - int [PK]  inventoryId  - int [PK] 
itemName  - nvarchar  inventoryTimeStamp - datetime 
itemType  - bit    quantity   - float 
catalogNumber - int    catId    - int [FK] 

Мой вопрос: Как соединить таблицы (слева присоединиться к ним) & суммируя количество товара в инвентаре таблицу, поэтому я могу напечатать: itemName, catalogNumber & sum.

Я попытался это:

SELECT Catalog.itemName, Inventory.catId, SUM(Inventory.quantity) AS Sum 
FROM Catalog 
LEFT JOIN Inventory ON Inventory.catId = Catalog.catalogId 
GROUP BY Inventory.catId 

Но я получаю исключение:

Column «Catalog.itemName» недействителен в списке выбора, потому что это не содержится ни агрегатной функции или предложение GROUP BY.

Что мне делать?

+2

Поместите 'Catalog.itemName' в предложение' group by', как указано в сообщении об ошибке. – Rohrbs

+0

Finnaly !!! Он работал, спасибо вам столько приятелей! – Erez

+0

Отлично! Теперь, примите один из ответов ниже, как решение вашей проблемы. :) – Rohrbs

ответ

0

Вам просто нужно добавить все необобщенные столбцы в предложение GROUP BY,

SELECT Catalog.itemName, 
     Inventory.catId, 
     SUM(Inventory.quantity) AS Sum 
FROM Catalog 
     LEFT JOIN Inventory 
      ON Inventory.catId = Catalog.catalogId 
GROUP BY Catalog.itemName, Inventory.catId 
+0

@mellamokb Я забыл удалить 'enumrate'. –

0

Просто добавьте

GROUP BY Catalog.itemName, Inventory.catId, Inventory.quantity

и он будет работать.

Если у вас есть sum, count и т.д., вам необходимо добавить GROUP BY в конце запроса

0

Вам необходимо либо удалить Catalog.itemName из вашего SELECT, либо включить его в свой пункт Group By.