2016-06-22 24 views
0
einer SQL-Abfrage mit mehreren Tabellen und eine Zählung Schreiben

3 Tabellen EsBenötigen Sie Hilfe bei

ist
  1. ITEM

-itemID

2.INVENTORY

-Menge

3.KARTEN

-charID

ITEM 1 --- viele BESTEHEN 8 ---- 1 CHARACTER

ich die Top 10 die gestapelten Gegenstände finden möchte, die im Zeichen Inventar gestapelt ist. Am Ende wird es so sein, dass itemID 1 4 Stacks hat und itemID 2 3 Stacks. In einer Tabelle. Dies ist

, wo ich bin derzeit nach dem Versuch, dies für eine Weile zu tun

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

Ich bin ein Aggregat Fehler bekommen, und ich weiß nicht, wie diese Abfrage

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

Jede Hilfe zu beheben ist willkommen Danke :)

+1

Sie müssen hinzufügen 'GROUP BY ITEM.itemID' am Ende. – jarlh

+0

Ich habe nur die Hälfte meines Gehirns aus dem Facepalm verloren Vielen Dank – Tristan

Antwort

1

Sie benötigen eine GROUP BY, um jede itemID zu zählen.

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 

Da Sie TOP 10 tun Ich schlage vor, auch ORDER BY am Ende hinzufügen:

ORDER BY Stacks desc 
Verwandte Themen