2012-06-26 210 views
1
SELECT tblorder.fld_userid 
FROM `tblordereditems` 
inner JOIN tblorder ON tblorder.fld_id = tblordereditems.fld_order_id 
where (SELECT sum(tblordereditems.fld_product_quantity)FROM tblordereditems inner JOIN tblorder ON tblorder.fld_id =tblordereditems.fld_order_id GROUP BY tblorder.fld_userid)>5 

這是我的查詢,但拋出。可以任何機構幫助錯誤感謝#1242 - 子查詢返回多個1行

這裏有三個表?

  1. tbluser
  2. tblorder
  3. tblordereditems

tbluser的領域fld_id是外鍵tblorder爲fld_userid。
tblorder的fld_id是tblordereditems的外鍵,因爲fld_order_id,我得到的結果fld_userid訂購了超過5個數量的產品,即。 fld_product_quantity的總和由tblorder.fld_userid分組它們:

+0

它計算每個組,因爲GROUP的總和 – Ziumin

+0

我認爲錯誤消息說,這一切。你的子查詢,'WHERE'子句和'> 5'之間的部分返回多於一行,你試圖將它們全部與'5'進行比較。 – Havelock

回答

1

由於您請求所有用戶的數量,它會超過1行。

嘗試:

Select tb1.fld_userid 
FROM `tblordereditems` tbi1 
inner JOIN tblorder tb1 ON tb1.fld_id = tbi1.fld_order_id 
where (
     SELECT sum(tbi2.fld_product_quantity) 
     FROM tblordereditems tbi2 inner JOIN tblorder tb2 ON tb2.fld_id =tbi2 .fld_order_id 
     where tb2.fld_userid = tb1.fld_userid 
)>5 
+0

你不需要GROUP BY tb2.fld_userid這裏的子查詢 – Ziumin

+0

你是對的,我複製並粘貼他的代碼:P,謝謝!我正在編輯它 –

+0

我試過了,但仍然無效,而是它返回用戶每次訂購的所有訂單。我希望通過根據用戶進行分組而不是每次用戶訂購 –

相關問題