加入2个表(投票)Mysql,PHP


JOIN with 2 Tables (Voting) Mysql, PHP

你好,我有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 2id

那么我该如何使用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)