MySQL计数类别中的项目

时间:2010-09-14 04:07:50

标签: mysql join

我不太了解MySQL,这里是我正在使用的表结构。

用户

  

id | first_name | last_name |用户名   |密码

类别

  

id | user_id |名字|描述

链接

  

id | user_id | category_id |名字|   网址|描述| date_added |   hit_counter

我正在尝试返回这样的结果集,以提供有关用户类别的信息,其中包含了多少链接。

  

id | user_id |名字|描述| LINK_COUNT

目前我有这个查询,但它只返回有链接的类别的行。它应返回没有任何链接的类别的行(空类别)。

  

SELECT categories。*,COUNT(links.id)   FROM类别LEFT JOIN链接ON   categories.id = links.category_id;

如何进行此查询?感谢。

3 个答案:

答案 0 :(得分:2)

我们不能用聚合选择表格点“星”。

你想做的就像(伪代码):

select
    categories.field1,
    categories.field2,
    {etc.}
    count(links.id)
from categories
left join links
    on categories.id = links.category_id
group by
    categories.field1,
    categories.field2,
    {etc.}

iow:您通过代码块错过了该组,以便在您的查询结果集中获得正确的聚合。

答案 1 :(得分:0)

为了塑造alien052002的答案以适合您的具体问题,以下(未经测试)应该有效:

select c.id,
    c.user_id,
    c.name,
    c.description,
    count(l.link_count)
from categories c
left join links l on l.category_id = c.id
group by c.id, c.user_id, c.name, c.description

答案 2 :(得分:0)

试试这个

SELECT categories.*, COUNT(links.id) FROM categories LEFT JOIN links ON categories.id=links.category_id group by categories.id;