2013-11-28 2 views
0

У меня есть запрос, где я пытаюсь получить количество строк, но в моем случае каждый раз падает как результат 1. Я полагаю, что это проблема присоединиться, и я не kniw, как справиться с этимselect count (*) с левым соединением

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

Попробуйте это, не уверен, что если вы используете MySQL или MSSQL. Поскольку у вас 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 as @ \t Jan Zeiseweis предложил, чем он работает – fefe

Смежные вопросы