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

加入2个表(投票)Mysql、PHP,php,mysql,sql,database,voting,Php,Mysql,Sql,Database,Voting,你好,我有3张桌子,但我只需要2张桌子的帮助 第一名是冠军。这张表中有100多个名字 第二个表是champion_名称,第一个表有昵称 第三张表是冠军名单和投票。有人投票支持昵称。如果我喜欢昵称,就竖起大拇指,或者竖起大拇指 在我的网站上,我有一个网站,在那里我可以看到一个完整的名单表1。共有2列。第一个是正常名称表1,第二个是昵称表2。现在我想在第2列中显示最好的昵称。实际上这是随机的,但我只想显示最好的昵称 我可以显示所有的名字,这不是问题所在。但是,如果我只想显示最好的昵称,我不知道如何

你好,我有3张桌子,但我只需要2张桌子的帮助

第一名是冠军。这张表中有100多个名字

第二个表是champion_名称,第一个表有昵称

第三张表是冠军名单和投票。有人投票支持昵称。如果我喜欢昵称,就竖起大拇指,或者竖起大拇指

在我的网站上,我有一个网站,在那里我可以看到一个完整的名单表1。共有2列。第一个是正常名称表1,第二个是昵称表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_unlike=1表示like,-1表示不喜欢,0表示什么都不是

例如:

Table 2: 50, 2, 4, Test
Table 3: 1, 3, 50, 1,
我喜欢表2的名字。因此表3中的名称_id就是表2的id

那么我怎样才能和JOIN一起做到这一点呢?
你能帮帮我吗。

像这样的东西应该可以

这个想法是先分析每个昵称的投票数。然后通过以下方式选择最大投票分数:

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)