Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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左连接_Mysql - Fatal编程技术网

Mysql-使用COUNT左连接

Mysql-使用COUNT左连接,mysql,Mysql,我有两个数据库表 目录 目录类别 它们分别通过两个表中的类别id(如cat_id和id)链接 我想列出目录_category中的所有类别,同时计算在目录中找到的该类别的记录数(使用单个sql查询) 我试过了 SELECT directory_category.id directory_category.category_name directory.cat_id count(directory) as total_records F

我有两个数据库表

  • 目录
  • 目录类别
  • 它们分别通过两个表中的类别id(如cat_id和id)链接


    我想列出目录_category中的所有类别,同时计算在目录中找到的该类别的记录数(使用单个sql查询)

    我试过了

    SELECT 
          directory_category.id
          directory_category.category_name
          directory.cat_id
          count(directory) as total_records
          FROM directory_category
          LEFT JOIN directory
          ON directory_category.id = directory.cat_id
    
    这个查询只生成一条记录,而总记录似乎是整个目录

    的总和,我可以这样说:

    SELECT 
        directory_category.id,
        directory_category.category_name,
        directory.cat_id,
        COUNT(directory.id) AS total_records
    FROM directory_category
    LEFT JOIN directory ON directory_category.id = directory.cat_id
    GROUP BY directory_category.id
    
    SELECT 
        directory_category.id,
        directory_category.category_name,
        directory.cat_id,
        count
    FROM
        directory_category
    LEFT JOIN
        (
            SELECT
                count(directory) as total_records
            FROM
                directory
            INNER JOIN
                directory_category
            ON
                directory_category.id = directory.cat_id
        ) AS count
    

    但很明显,你需要好好利用它。

    对于所有记录,total_records将被列为1