【问题标题】:Get loser of match where it only shows winner只显示获胜者的比赛失败者
【发布时间】:2014-08-16 19:15:41
【问题描述】:

我有一个名为 teams (id, name)、matches (id, team1, team2)、results (match, Winner) 的表格

如何根据表格匹配和结果选择匹配 x 的失败者?是否可以使用 MySQL 或我必须在 PHP 上进行?

编辑: 比赛 - team1 和 team2 参考球队(id) 结果 - 匹配参考匹配(id)和获胜者参考团队(id)

我需要获取失败团队的 id。

【问题讨论】:

  • 获胜者栏中的内容是什么?队名?你能发布一些与表格相关的数据吗?
  • 使用matches_idresults_matches_id(例如)加入matches 表和results 表,然后将不等于获胜者的另一队从比赛中拉出results
  • 已编辑,我为不够清晰深表歉意,希望现在更好。

标签: mysql


【解决方案1】:

假设你不允许平局,输家是参加比赛的队伍,不是赢家,所以(使用X作为比赛ID):

SELECT name
FROM   teams
WHERE  id IN (SELECT team 
              FROM   (SELECT match, team1 AS team
                      FROM   matches
                      WHERE  id = X
                      UNION ALL
                      SELECT match, team1 AS team
                      FROM   matches
                      WHERE  id = X) t
              JOIN   results
              ON     t.match = winner.match AND t.team != results.winner)

【讨论】:

  • 我很确定 Gordon 的答案在性能方面更好。
【解决方案2】:

我会用joincase 声明来做到这一点:

select m.id,
       (case when r.winner = m.team1 then team2
             else team1
        end) as loser
from matches m join
     results r
     on m.id = r.match;

因为您只需要id,所以不需要teams 表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 2016-10-13
    • 2012-05-20
    • 2015-11-02
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2020-03-06
    相关资源
    最近更新 更多