1

基本上,我在表 A 上有大量产品信息。这包括 product_id,它是两个表的通用 id。在表 BI 上有一个投票列表,其中包括 product_id、用户名、投票(可以是 +1 或 -1)。

所以基本上我想要一个“表 A”表,其中包含一个附加列,其中包含该 product_ID 的所有投票的总和。我相信有一种简单的方法可以做到这一点。我认为这是使用“正确加入”。

我仍然希望它列出表 A 中的所有产品,无论它们是否有单个 +1 或 -1 投票。

非常感谢人们!

4

3 回答 3

1

你可以使用group by语句和left join喜欢:

select productName, sum(vote) as productVoteSum
from `products` p
left join `products_votes` pv on p.id = pv.productId
where productName like '%chocolat%'
group by p.id
order by productName;
于 2013-10-27T14:44:03.167 回答
1

您可以执行 LEFT JOIN(遍历 tableA 上的所有信息并将 SUM 放入 tableB 上具有匹配 product_id 的那些),然后添加 SUM(b.thevote) 并按剩余列分组

SELECT a.product_id,a.productName,SUM(b.thevote)
FROM tableA a
LEFT JOIN tableB b ON a.product_id = b.product_id
GROUP BY a.product_id, a.productName
于 2013-10-27T14:47:47.230 回答
0
SELECT a.*, SUM(b.votes) FROM TableA a LEFT JOIN TableB b ON a.prouct_id=b.product_id
GROUP BY a.product_id
于 2013-10-27T14:44:39.840 回答