MySql查询中的COUNT()、GROUP BY和NULL值
我让这个MySql查询部分工作: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 =
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的笔记更多的东西。再次非常感谢!