2012-06-26 160 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

我试过了,但仍然无效,而是它返回用户每次订购的所有订单。我希望通过根据用户进行分组而不是每次用户订购 –

相关问题