2017-07-07 62 views
1

我在我的数据库中有2个表。第一个是comments,另一个是comments_votes。 我想选择所有评论,并且对于每条评论,从comments_votes中选择所有投票,将它们加在一起,并将第一个查询作为totalVote加入。SQL在另一个表中计算行并加入

comments表的样子:

id  comment  video_id date_sent 
---------------------------------------- 
5  "...."   99  "2017-05-23" 
18  "...."   99  "2017-05-23" 

comments_votes表如下所示:

id  user_id  comment_id vote 
---------------------------------------- 
45   86   5   1 
45   23   5   1 
78   12   18  -1 

,最后祝愿结果会是什么样子:

id  comment video_id votes_total 
---------------------------------------- 
5  " ... "  99    2 
18  "... "  99   -1 

我可以管理简单的SQL操作,但这超出了我。这是甚么可能吗?如果是,如何?

+2

提示:'GROUP BY','JOIN'。 –

+1

您的数据有问题。源数据中没有任何'124'的video_id出现。也许这是一个错字? –

+1

提示:'SUM' .... –

回答

2
select C.id, C.Comment, C.Video_ID, SUM(V.Votes) AS Vote_total 
from comments C 
left outer join comments_votes V 
on C.id=V.comment_id 
group by C.id, C.Comment, C.Video_ID 
0
SELECT c.id,comment,c.video_id,SUM(v.vote) AS Vote_total 
FROM comments c, comments_votes v 
WHERE c.id = v.comment_id 
GROUP BY C.id, C.Comment, C.Video_ID; 
+0

这使用旧式Oracle连接,我相信你正在做一个内部连接而不是外部连接。 –

相关问题