Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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”查询;“左连接”;哪里有钥匙!=b、 钥匙_Mysql - Fatal编程技术网

使用“MYSQL”查询;“左连接”;哪里有钥匙!=b、 钥匙

使用“MYSQL”查询;“左连接”;哪里有钥匙!=b、 钥匙,mysql,Mysql,我有以下MYSQL查询: SELECT categories.key, categories.name, count(*) as itemsCount FROM categories LEFT JOIN designs ON categories.key = designs.category GROUP BY categories.name ASC 它负责选择所有类别并计算属于每个类别的设计数量。但是,我的应用程序和DB设置为,如

我有以下MYSQL查询:

SELECT categories.key, categories.name, count(*) as itemsCount 
    FROM categories 
        LEFT JOIN designs 
            ON categories.key = designs.category 
    GROUP BY categories.name ASC
它负责选择所有类别并计算属于每个类别的设计数量。但是,我的应用程序和DB设置为,如果“
设计
”表中的“
类别
”字段的值为“0”,则此设计属于虚拟设计(在“
类别
”表中没有
键=0
的类别)
未分配
”类别

我的问题是是否可以修改我的查询以同时统计不属于任何现有类别的设计?

也许我把事情复杂化了,用“0”键添加一个类别要容易得多,但是为了学习,也许有更好的方法


谢谢

这只是一种快速实现您所寻找目标的方法,我相信还有更聪明的方法

SELECT categories.key, categories.name, count(designs.category) as itemsCount
FROM categories
   LEFT JOIN designs
      ON categories.key = designs.category
GROUP BY categories.key ASC
UNION ALL
SELECT 0,'VIRTUAL',COUNT(*) AS itemsCount
FROM designs
WHERE category = 0

这只是一个快速的方式,以达到你正在寻找的,我相信有更聪明的东西

SELECT categories.key, categories.name, count(designs.category) as itemsCount
FROM categories
   LEFT JOIN designs
      ON categories.key = designs.category
GROUP BY categories.key ASC
UNION ALL
SELECT 0,'VIRTUAL',COUNT(*) AS itemsCount
FROM designs
WHERE category = 0

那么类别键0有意义吗?@Maess它有意义,但在“类别”表中不存在。那么最好在类别表中给0一个值。那么类别键0有意义吗?@Maess它有意义,但在“类别”表中不存在表。最好在您的categories表中为0指定一个值。只需稍作修改即可使查询更快、更正确:)谢谢你们。工作得很有魅力。是时候探索UNION命令了。只需做一些小修改,使查询更快、更正确:)谢谢你们。工作得很有魅力。是时候探索UNION命令了。