首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用两个表连接(投票) Mysql、PHP

使用两个表连接(投票) Mysql、PHP
EN

Stack Overflow用户
提问于 2014-10-15 21:58:00
回答 1查看 81关注 0票数 1

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

第一个表是champions。在这个表格中有100多个名字。

第二个表是champion_names,第一个表有昵称。

第三个表是champion_names_vote。昵称的投票结果出来了。如果我喜欢任何昵称或拇指朝下,请竖起拇指。

在我的网站上,我可以看到一个满是(Table 1)名字的列表。有2列。第一个是正常名称(Table 1),第二个是昵称(Table 2)。现在我想在第二列中显示最好的昵称,实际上它是随机的,但我只想显示最好的昵称。

我可以显示所有的名字这不是问题所在。但如果我只想显示最好的昵称,我不知道怎么做。

代码语言:javascript
复制
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表示不喜欢。

示例:

代码语言:javascript
复制
Table 2: 50, 2, 4, Test
Table 3: 1, 3, 50, 1,

我喜欢Table 2这个名字。所以Table 3中的name_id就是Table 2id

那么,我该如何使用JOIN来做到这一点呢?你能帮帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-15 23:53:08

像这样的东西应该能起到作用。

我的想法是首先分析每个昵称的投票。然后选择HAVING的最大投票分数

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26384419

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档