2013-10-27 84 views
1

基本上我有一個關於表A的產品信息的負載。這包括product_id這是兩個表上的公共ID。在表B中,我有一個包含product_id,username,thevote(可以是+1或-1)的選票列表。MySQL右加入SUM()從表B到表A的信息

所以基本上我想要一個'表A'的表和一個包含該product_ID所有投票的SUM的附加列。我相信有一個簡單的方法來做到這一點。我認爲這是使用'正確連接'。

我仍然希望它列出表A中的所有產品,無論他們是否擁有+1或-1票。

非常感謝人民提前!

回答

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; 
+0

正是我在找的東西。我如何在這個狀態下添加'WHERE'和'SORTBY'? –

+0

在我編輯的答案中查看 –

+0

正如我所期待的那樣,如果可能的話,它會給+2! –

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 
0

你可以做一個LEFT JOIN(即經過的所有信息TableA上,並把總和中具有匹配PRODUCT_ID的那些在桌子B上),那麼你在其餘列上加上SUM(b.thevote)和group

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 
相關問題