2012-08-03 40 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;