Mysql 如何使COUNT not COUNT(字段名)为空值?
我正在设置电子商务后端的请求。 我有3个表:id为索引的product、id为索引的category和product_category,它们绑定前2个表,因为一个产品可以在多个类别中,并且一个类别中可以有多个产品 请求是获取所有类别的列表,其中包含该类别中的类别名称和产品数量,当类别不包含任何产品时,包括零值。显示结果的最后两列 不幸的是,COUNTfieldname给了我1而不是0 以下是我的SQL请求:Mysql 如何使COUNT not COUNT(字段名)为空值?,mysql,sql,Mysql,Sql,我正在设置电子商务后端的请求。 我有3个表:id为索引的product、id为索引的category和product_category,它们绑定前2个表,因为一个产品可以在多个类别中,并且一个类别中可以有多个产品 请求是获取所有类别的列表,其中包含该类别中的类别名称和产品数量,当类别不包含任何产品时,包括零值。显示结果的最后两列 不幸的是,COUNTfieldname给了我1而不是0 以下是我的SQL请求: SELECT product_category.id_category AS pr_
SELECT product_category.id_category AS pr_cat_cat_id,
id_product AS pr_cat_pr_id,
product.name AS productname,
categories.id,
categories.name,
COUNT ('pr_cat_cat_id') AS quantity
FROM product
LEFT JOIN product_category ON product_category.id_product = product.id
RIGHT JOIN (SELECT * FROM category) AS categories
ON categories.id = product_category.id_category
GROUP BY name
ORDER BY id ASC
得到这个结果:
pr_cat_cat_id pr_cat_pr_id productname id name quantity
1 1 Product "Name1" 1 Category 1 2
2 3 Product "Name 3" 2 Category 2 2
NULL NULL NULL 3 Category 3 1
NULL NULL NULL 4 Category 4 1
NULL NULL NULL 5 Category 5 1
NULL NULL NULL 6 Category 6 1
我确实希望没有产品的类别的数量为零。您计算的是一个常量字符串值,它从不为空。正确使用引号。这里不需要它们:
COUNT(product_category.id_category) AS quantity
不能对计数使用别名。您需要参考原始列
请注意,您的查询格式不正确。select中的唯一内容应该是名称和聚合函数。您正在计算一个常量字符串值,该值永远不会为空。正确使用引号。这里不需要它们:
COUNT(product_category.id_category) AS quantity
不能对计数使用别名。您需要参考原始列
请注意,您的查询格式不正确。select中只有名称和聚合函数。不能引用同一select列表中的列别名。而是使用其原始列名:
COUNT(product_category.id_category)
注意:单引号用于字符串文本,并且这些文本从不为空。不能引用同一选择列表中的列别名。而是使用其原始列名:
COUNT(product_category.id_category)
注意:单引号用于字符串文字,它们永远不会为空。如果没有这些引号,我会在@Gordon的回答中提取的“字段列表”中出现错误1054-未知列“pr_cat_cat_id:”您不能使用别名进行计数。您需要参考原始列如果没有这些引号,我将得到错误1054-从@Gordon的答案中提取的“字段列表”中的未知列“pr_cat_cat_id:”您不能使用别名进行计数。您需要引用原始列。“单引号用于字符串文字,并且这些文字永远不会为null。Do COUNTproduct_category.id_category!”!无法引用同一选择列表中的列别名。谢谢!它确实工作正常。这是一个有价值的注意事项:无法引用同一选择列表中的列别名。不相关,但:右键连接选择*从类别作为类别。。。可以简化为将类别作为类别右键联接…单引号用于字符串文字,并且这些文字永远不会为空。Do COUNTproduct\u category.id\u category!无法引用同一选择列表中的列别名。谢谢!它确实工作正常。这是一个有价值的注意事项:无法引用同一选择列表中的列别名。不相关,但:右键连接选择*从类别作为类别。。。可以简化为右连接类别作为类别。。。