你好,我有3个表,但我只需要2个表的帮助。
第一个表是champions
。这张表中有100多个名字。
第二个表是champion_names
,第一个表有昵称。
第三个表是champion_names_vote
。昵称有投票权。竖起大拇指,如果我喜欢任何昵称,或者竖起大拇指。
在我的网站上,我有一个网站,在那里我可以看到一个完整的名称列表(Table 1)
。共有2列。第一个是普通名称(Table 1)
,第二个是昵称(Table 2)
。现在,我想在第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_dislike
like_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来实现这一点呢?你能帮帮我吗。
这样的东西应该能起到作用。
想法是先分析每个昵称的投票情况。然后选择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)