我不太了解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;
如何进行此查询?感谢。
答案 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;