需要帮助编写具有多个表和计数的Sql查询

时间:2016-06-22 09:55:20

标签: sql

有3个表

  1. ITEM
  2. -itemID

    2.INVENTORY

    -quantity

    3.CHARACTERS

    -charID

    项目1 ---许多存货8 ---- 1字符

    我想找到堆放在角色库存中的前10个堆叠最多的项目。所以最后它会像itemID 1有4个堆栈,而itemID 2有3个堆栈。在一张桌子里。

    这是我目前在尝试这样做一段时间后所处的位置

    SELECT TOP 10 COUNT(INVENTORY.itemID) as Stacks, ITEM.itemID
    FROM INVENTORY
    JOIN ITEM
    ON INVENTORY.itemID = ITEM.itemID
    WHERE INVENTORY.quantity>1
    

    我收到了一个汇总错误,我不知道如何修复此查询

    Column 'ITEM.itemID' is invalid in the select list because it is not  
    contained in either an aggregate function or the GROUP BY clause.
    

    欢迎任何帮助谢谢:)

1 个答案:

答案 0 :(得分:1)

您需要GROUP BY来计算每个itemID。

SELECT TOP 10 COUNT(INVENTORY.itemID) as Stacks, ITEM.itemID
FROM INVENTORY
JOIN ITEM
ON INVENTORY.itemID = ITEM.itemID
WHERE INVENTORY.quantity>1
GROUP BY ITEM.itemID

由于您TOP 10,我还建议在最后添加ORDER BY

ORDER BY Stacks desc