2012-08-03 46 views
0

我试图从订单表中检索客户和发票ID列表,其中客户只有一个订单。下面的SQL返回零记录,应该有几十个。如果我用一个有效的userid替换它,子查询似乎可以正常工作。我必须做一些非常错误的事情,有什么帮助吗?MySQL WHERE子查询与比较运算符

SELECT tblclients.id AS clientid, tblinvoices.id AS invoiceid 
      FROM tblorders 
      join tblinvoices ON tblorders.invoiceid = tblinvoices.id 
      join tblclients ON tblorders.userid = tblclients.id 
      WHERE (SELECT COUNT(*) FROM tblorders WHERE userid = tblorders.userid) = 1; 
+0

什么是你想实现这一点:'WHERE(SELECT COUNT(*)FROM tblorders其中userid = tblorders.userid)= 1' – mlishn 2012-08-03 16:24:53

+0

其中与相关的订单数量客户端是一个。 – Michelle 2012-08-04 09:15:38

+0

是否会导致“1 = 1”或“0 = 1”或其他组合? – mlishn 2012-08-05 01:41:14

回答

1

我想你有一个别名的问题。尝试添加T1别名:

SELECT tblclients.id AS clientid, tblinvoices.id AS invoiceid 
      FROM tblorders T1 
      join tblinvoices ON T1.invoiceid = tblinvoices.id 
      join tblclients ON T1.userid = tblclients.id 
      WHERE (SELECT COUNT(*) FROM tblorders WHERE userid = T1.userid) = 1;