2016-06-07 55 views
0

我需要在單個查詢中獲取每個選擇項及其計數。以下是我的查詢並希望將輸出視爲單個數組。按多個連接查詢錯誤進行分組

select ordetable.order_id, count(ordetable.order_id), order_table.name, 
     count(order_table.na me), orderitem_table.itemname, 
     count(orderitem_table.itemname) 
from order_table 
left join orderitem_table 
    on order_table.order_id = orderitem_table.order_id 
group by ordetable.order_id 

正在此錯誤:

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Column 'orderitem_table.itemname' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

+0

一般的GROUP BY規則說:如果指定了GROUP BY子句,SELECT列表中的每個列引用必須標識一個分組列或者是一個set函數的參數! – jarlh

+0

您應該添加'order_table.name','orderitem_table.itemname'到'group by'。 – Blank

回答

2

問題從錯誤信息是顯而易見的,不是嗎?

修改您的查詢,如下所示。

select ordetable.order_id, count(ordetable.order_id), order_table.name, 
     count(order_table.name), orderitem_table.itemname, 
     count(orderitem_table.itemname) 
from order_table 
left join orderitem_table 
    on order_table.order_id = orderitem_table.order_id 
group by ordetable.order_id, order_table.name, orderitem_table.itemname 
+0

感謝您的幫助,我可以確認我的問題,我需要指定選擇列表中的所有項目進行分組,如果我使用group by子句,並且如果我不使用聚合函數與選擇items.Phanks – youv

+0

您'再右吧。查看http://www.w3schools.com/sql/sql_groupby.asp以供參考。 – MusicLovingIndianGirl

+0

非常感謝,假設我有兩個名字的順序,有沒有什麼辦法可以獲取兩個名字或其他東西的數組。我需要在我的數組輸出中獲取所有的值,包括數量和值 – youv

1

您的措詞和您的查詢不同步。每一個項目,其計(在所有的訂單)將

select orderitem_table.itemname, orderitem_table.itemnumber, count(*) 
from order_table 
join orderitem_table 
    on order_table.order_id = orderitem_table.order_id 
group by orderitem_table.itemname, orderitem_table.itemnumber 
+0

感謝您的幫助: ) – youv

+0

我需要獲取所有選擇值以及計數,查詢是否也獲取名稱? – youv

+0

不知道我是否理解,哪些值來自哪些表和列? – Serg

2

如果你不喜歡組order_table.name和orderitem_table.itemname,那麼你可以使用「分」的條件。

select ordetable.order_id, count(ordetable.order_id), min(order_table.name), 
     count(order_table.name), min(orderitem_table.itemname), 
     count(orderitem_table.itemname) 
from order_table 
left join orderitem_table 
    on order_table.order_id = orderitem_table.order_id 
group by ordetable.order_id 
+0

我檢查了這個。它運作良好。試試這個 – PriVictor

+0

感謝您的幫助,如果我用戶名與項目名稱我會得到與查詢相關的所有名稱?有什麼辦法可以得到特定的選擇項目作爲數組例如:特定順序的名稱數組? – youv

+0

是的,你會得到所有的名字。在SQL查詢中沒有數組類型,您可以通過編程將此結果轉換爲數組,並且可以使用SQL中的'order by'關鍵字對結果進行排序。 – PriVictor