Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 not COUNT(字段名)为空值?_Mysql_Sql - Fatal编程技术网

Mysql 如何使COUNT not COUNT(字段名)为空值?

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_

我正在设置电子商务后端的请求。 我有3个表:id为索引的product、id为索引的category和product_category,它们绑定前2个表,因为一个产品可以在多个类别中,并且一个类别中可以有多个产品

请求是获取所有类别的列表,其中包含该类别中的类别名称和产品数量,当类别不包含任何产品时,包括零值。显示结果的最后两列

不幸的是,COUNTfieldname给了我1而不是0

以下是我的SQL请求:

  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!无法引用同一选择列表中的列别名。谢谢!它确实工作正常。这是一个有价值的注意事项:无法引用同一选择列表中的列别名。不相关,但:右键连接选择*从类别作为类别。。。可以简化为右连接类别作为类别。。。