在执行两个表的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 的产品,这意味着它们尚未经过审核。我觉得这应该很容易,但我似乎无法弄明白。
答案 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”
实际上,您的论坛应该包含产品
中的所有字段名称