我有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);
我知道这是错的,但我不明白我该怎么做才能让它发挥作用。
答案 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
您不能使用子查询,因为每个类别可能有多个类别和多个广告。