2012-10-17 54 views
1

我在計算使用交叉連接的其中一個查詢的結果數時出現問題。當MySQL中涉及交叉連接時,COUNT如何表現?

的數據收集查詢是

SELECT CF.*, C.Type AS Ctype, C.Resp AS Resp 
FROM Campaigns C, CampaignEntities CF 
WHERE C.clientId = '10' AND LOWER(C.Resp) in ('resp1','resp2','resp3') 
ORDER BY entityCode DESC 

和它正確地返回符合標準的行。

然而,改變它時,得到適合的行數:

SELECT COUNT(*) as RowNr 
FROM Campaigns C, CampaignEntities CF 
WHERE C.clientId = '10' AND LOWER(C.Resp) in ('resp1','resp2','resp3') 
ORDER BY entityCode DESC 

我得到數以百萬計的(基本上不應用任何的WHERE條件連接結果)。

任何想法爲什麼它的行爲如此,或者我怎麼可能得到正確的數字?

+0

你就不能使用你的API NUM_ROWS()方法的第一個查詢? –

+0

這仍然不能解釋它爲什麼顯示這種行爲。事實上,在我的盒子裏它並沒有。所以也許你應該用樣本數據創建一個簡化的測試用例。 – AndreKR

+0

你會得到COUNT(C. *)x COUNT(CF. *)的行,因爲你根本沒有加入或過濾這兩個表。 – joocer

回答

0

嘗試

SELECT COUNT(C.clientId) as RowNr 

代替

SELECT COUNT(*) as RowNr 

因爲count(*)數甚至null

+0

這仍然不起作用。但是,我要用mysql_num_rows來獲取數字。無法花時間去研究它。 – Bogdan