MySQL语法错误

时间:2014-01-05 13:03:40

标签: mysql

我有3张桌子:

user(id, name);
advert(id,name,category_id,user_id);
category(id,category_name);

我想要做的是向某个用户展示他在每个类别中有多少广告。 我必须使用子查询。我尝试过这样的东西,但根本不工作。 我尝试过的是这样的:

SELECT c.id,c.name count(advert) number_of_adverts
FROM category c
GROUP BY c.name
HAVING count(advert)=(SELECT count(a.id)
                     FROM advert a
                     INNER JOIN user ON a.user_id=u.id
                     WHERE u.id="1"
                     HAVING a.category_id=c.id);

我知道这是错的,但我不明白我该怎么做才能让它发挥作用。

1 个答案:

答案 0 :(得分:0)

您正在寻找GROUP BY子句。

SELECT c.id, c.name, COUNT(a.id) AS number_of_adverts
FROM user u
JOIN advert a ON (u.id = a.user_id)
JOIN category c ON (c.id = a.category_id)
WHERE u.user_id = '999'
GROUP BY c.id, c.name

您不能使用子查询,因为每个类别可能有多个类别和多个广告。