2014-07-17 64 views
1

在我的mysql查询中,如果存在元素,我将计数它。如果产品存在,它会返回实际计数,但如果没有产品,则返回NULL。如果值为空,我怎么能返回0?我发现OneTwo与此问题有关的线索。但他们都没有帮助。防止计数()在mysql中返回“NULL”

我的查询是

SELECT 
    COUNT(*) AS num 
FROM 
    table1 AS t1 
JOIN table2 AS t2 ON t2.id = t1.id_fk 
JOIN table3 AS t3 ON t3.id = t2.t3_id_fk 
JOIN table4 AS t4 ON t4.id = t2.t4_id_fk 
JOIN table 5 AS t5 ON t5.t2_id_fk = t2_id 
WHERE pd.product_url = 'sample_product' 
AND mcd.main_category_url = 'sample_category' 
AND scd.sub_category_url = 'sample_sub_category' 
AND mpd.merchant_prod_status = 'active' 
AND pd.product_status = 'active' 
AND mcd.main_category_status = 'active' 
AND scd.sub_category_status = 'active' 
GROUP BY t1.id 

我也试过IFNULL(count(*), 0)。它也给NULL

请帮助我...任何帮助将不胜感激。谢谢你在前进

+0

你能给你的数据结构和数据的例子吗? –

+0

对不起。这些是大桌子。 :( – Arun

+0

好吧,请尝试与计数(t1.id),而不是计数(*); –

回答

0

你应该将其封装:

SELECT IFNULL(num,0) 
    FROM (SELECT COUNT(*) AS num 
      FROM table1 AS t1 
      JOIN table2 AS t2 ON t2.id = t1.id_fk 
      JOIN table3 AS t3 ON t3.id = t2.t3_id_fk 
      JOIN table4 AS t4 ON t4.id = t2.t4_id_fk 
      JOIN table 5 AS t5 ON t5.t2_id_fk = t2_id 
      WHERE pd.product_url = 'sample_product' 
      AND mcd.main_category_url = 'sample_category' 
      AND scd.sub_category_url = 'sample_sub_category' 
      AND mpd.merchant_prod_status = 'active' 
      AND pd.product_status = 'active' 
      AND mcd.main_category_status = 'active' 
      AND scd.sub_category_status = 'active' 
     GROUP BY t1.id 
    ) s 
+0

thak you for help..but it again returns null .. :(, @OscarPérez – Arun

+0

@Arun这很奇怪....你如何执行这个查询?直接从mysql提示符? –

+0

我正在使用navicat来执行查询,navicat和php代码都返回null – Arun