Mysql Join,Sum,Having,Group By。无法弄明白

时间:2012-02-28 00:09:56

标签: mysql group-by sum inner-join having

在执行两个表的JOIN并使用HAVING过滤这两个表时,我遇到了mysql的问题。

假设我的表格如下:

产品:

id | Name
1  | Product 1
2  | Product 2
3  | Product 3

评论:

Name     | Product_id | score
Review 1 | 1          | 10000

我最好的猜测如下,但它不起作用:

SELECT "products".*, sum("reviews".score) FROM "products" INNER JOIN "reviews" ON "reviews"."empire_id" = "products"."id" GROUP BY products.id HAVING sum("reviews".score)=0;

我想获得得分为0 的产品,这意味着它们尚未经过审核。我觉得这应该很容易,但我似乎无法弄明白。

2 个答案:

答案 0 :(得分:1)

听起来你想要的产品出现在“产品”表中而不是“评论”表中。也许看看SQL - find records from one table which don't exist in another

或者,用LEFT JOIN替换INNER JOIN可能有效。

答案 1 :(得分:0)

SELECT products.id, products.name, sum("reviews".score)
FROM products
LEFT JOIN reviews ON reviews.product_id = products.id
GROUP BY products.id, products.name
HAVING sum(reviews.score)=0;

“review”。“empire_id”=“products”。“id”

应该是“评论”。“product_id”=“产品”。“id”

实际上,您的论坛应该包含产品

中的所有字段名称