2013-11-28 75 views
0

我有一個查詢,我嘗試檢索的行數,但在我的情況下,每次結果1下降。我想這是一個連接的問題,我不kniw如何處理這種左加入選擇計數(*)

SELECT 
    COUNT(*) AS summe 
FROM 
    feeds 
    LEFT JOIN cat_product cp 
    ON cp.product_id = feeds.productid 
WHERE 1 = 1 
    AND cp.price BETWEEN 950 
    AND 1450 
    AND cp.ram_cap BETWEEN 5 
    AND 11 
    AND feeds.tdcategoryname LIKE '%Laptop%' 
    AND feeds.brand IN ('Dell', 'Lenovo', 'Acer', 'Asus') 
GROUP BY cp.product_id 
+3

什麼是'WHERE 1 = 1'的呢? 'COUNT(feeds。*)'或'COUNT(cp。*)'? – zkanoca

+0

我使用php進行動態查詢,其中1 = 1是爲了避免流程 – fefe

+0

上的複雜問題,我們也總是使用PHP進行動態查詢。但我們從不使用WHERE 1 = 1這不會影響結果。 – zkanoca

回答

0

試試這個,不知道如果你使用的是MySQLMSSQL。由於您LEFT JOIN有可能值爲NULL。在MSSQL中,如果計入NULL值,結果將爲NULL始終使用像COUNT這樣的聚合函數。

對於MySQL

SELECT 
    COUNT(IFNULL(cp.Procuct_id,0)) AS summe 
FROM 
    feeds 
    LEFT JOIN cat_product cp 
    ON cp.product_id = feeds.productid 
WHERE 1 = 1 
    AND cp.price BETWEEN 950 
    AND 1450 
    AND cp.ram_cap BETWEEN 5 
    AND 11 
    AND feeds.tdcategoryname LIKE '%Laptop%' 
    AND feeds.brand IN ('Dell', 'Lenovo', 'Acer', 'Asus') 
+0

謝謝我正在嘗試mysql版本,但丟棄了相同的結果 – fefe

+0

你想計算cp.Product_Id? –

+0

是的,我想數cp.product_id,刪除GROUP BY作爲@ \t Jan Zeiseweis建議比它的工作 – fefe