2

我有 2 个数据库表

  1. 目录
  2. 目录类别

它们分别由两个表中的类别 id(如 cat_id 和 id)链接


我想列出 directory_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

此查询仅产生一条记录,并且total_records似乎是整个目录表的总和

4

2 回答 2

7
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
于 2013-05-16T08:05:48.717 回答
0

猜测一下(而且很快),我会说:

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

但显然,你需要玩弄它。

于 2013-05-16T08:08:43.153 回答