你好,我有3张桌子,但我只需要2张桌子的帮助。
第一个表是champions。在这个表格中有100多个名字。
第二个表是champion_names,第一个表有昵称。
第三个表是champion_names_vote。昵称的投票结果出来了。如果我喜欢任何昵称或拇指朝下,请竖起拇指。
在我的网站上,我可以看到一个满是(Table 1)名字的列表。有2列。第一个是正常名称(Table 1),第二个是昵称(Table 2)。现在我想在第二列中显示最好的昵称,实际上它是随机的,但我只想显示最好的昵称。
我可以显示所有的名字这不是问题所在。但如果我只想显示最好的昵称,我不知道怎么做。
Table 2: id(AI), champ_id(this is the id for Table 1), sender_id, name
Table 3: id(AI), userid, name_id(Table 2 ID), like_dislikelike_dislike =1表示喜欢,-1表示不喜欢,0表示不喜欢。
示例:
Table 2: 50, 2, 4, Test
Table 3: 1, 3, 50, 1,我喜欢Table 2这个名字。所以Table 3中的name_id就是Table 2的id
那么,我该如何使用JOIN来做到这一点呢?你能帮帮我吗?
发布于 2014-10-15 23:53:08
像这样的东西应该能起到作用。
我的想法是首先分析每个昵称的投票。然后选择HAVING的最大投票分数
SELECT voteResult.name, vote as winnerVoteScore
FROM(
select a.name_id, b.name,
sum(IF(a.like_dislike = 1, 1, IF(a.like_dislike = 2, -1, 0 ))) as vote
FROM champion_names_vote as a JOIN champion_names as b
ON a.name_id = b.ID
GROUP BY 1
) as voteResult
GROUP BY 1
HAVING vote = max(vote)https://stackoverflow.com/questions/26384419
复制相似问题