Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql查询中的COUNT()、GROUP BY和NULL值_Mysql_Count_Group By_Isnull - Fatal编程技术网

MySql查询中的COUNT()、GROUP BY和NULL值

MySql查询中的COUNT()、GROUP BY和NULL值,mysql,count,group-by,isnull,Mysql,Count,Group By,Isnull,我让这个MySql查询部分工作: SELECT p.product_id, p.product_name, p.sales, p.length, p.hits, COUNT(w.product_id) AS favorites FROM `products` AS p, `products_mf_xref` AS m, `wishlist_items` AS w WHERE m.manufacturer_id = '1' AND p.product_id =

我让这个MySql查询部分工作:

SELECT p.product_id, p.product_name, p.sales, 
   p.length, p.hits, COUNT(w.product_id) AS favorites 
   FROM `products` AS p, `products_mf_xref` AS m, 
   `wishlist_items`  AS w 
 WHERE m.manufacturer_id = '1' 
   AND p.product_id = m.product_id 
   AND m.product_id = w.product_id 
 GROUP BY m.product_id ORDER BY p.product_id ASC
我正在从一个表中恢复一些字段,并尝试获取这些产品在另一个表中被引用的次数(最后一个表称为“whishlist”)。查询工作正常,但我只获取在愿望列表表中至少引用过一次的产品

我了解到count(*)不会得到有意义的空值,但我还需要愿望列表表中未引用的产品,我的意思是,count(w.product_id)等于“0”的产品

有没有办法恢复所有产品,包括空值? 有什么办法改变我的疑问吗?这会让我发疯的

提前谢谢

使用左连接:

SELECT p.product_id, p.product_name, p.sales, 
   p.length, p.hits, COUNT(w.product_id) AS favorites 
   FROM `products` AS p 
   LEFT JOIN `products_mf_xref` AS m 
       ON p.product_id = m.product_id AND m.manufacturer_id = '1' 
   LEFT JOIN `wishlist_items`  AS w ON m.product_id = w.product_id 
 GROUP BY m.product_id ORDER BY p.product_id ASC
顺便说一下,尽可能使用连接来镜像数据关系,使用WHERE for filters

使用左连接:

SELECT p.product_id, p.product_name, p.sales, 
   p.length, p.hits, COUNT(w.product_id) AS favorites 
   FROM `products` AS p 
   LEFT JOIN `products_mf_xref` AS m 
       ON p.product_id = m.product_id AND m.manufacturer_id = '1' 
   LEFT JOIN `wishlist_items`  AS w ON m.product_id = w.product_id 
 GROUP BY m.product_id ORDER BY p.product_id ASC

顺便说一句,尽可能多地使用JOIN来镜像数据关系,使用WHERE for filters

我怀疑我的问题与LEFT JOIN有关,并想查看我在MySql上的笔记以寻找正确的答案,但你以前回答过我,我很高兴告诉你你是对的,查询将生成预期的结果。非常感谢。你真是个笨蛋!不过,在下次提问之前,我会先复习笔记。再次感谢您的建议!为此干杯,欢迎!:-)尝试使用Postgresql,它就像一个开源的Oracle。看看你能用CTE和windowing函数实现什么,例如:仔细看看这个查询,它本身就是一个关于LEFT JOIN的主类。通过研究这个查询,我学到了比复习关于MySQL的笔记更多的东西。再次非常感谢!我怀疑我的问题与LEFT JOIN有关,并想查看我在MySql中的笔记以寻找正确答案,但你之前回答过我,我很高兴告诉你你是对的,查询产生了预期的结果。非常感谢。你真是个笨蛋!不过,在下次提问之前,我会先复习笔记。再次感谢您的建议!为此干杯,欢迎!:-)尝试使用Postgresql,它就像一个开源的Oracle。看看你能用CTE和windowing函数实现什么,例如:仔细看看这个查询,它本身就是一个关于LEFT JOIN的主类。通过研究这个查询,我学到了比复习关于MySQL的笔记更多的东西。再次非常感谢!