【问题标题】:SQL query to find the head to head match winningSQL查询查找头对头比赛获胜
【发布时间】:2015-03-30 13:30:49
【问题描述】:

我有以下 MySQL 数据库表,其中描述了足球冠军筹码中的比赛和结果:

这些行来自以下 SQL 查询:

    Select *
From RisultatiFantaAllenatori
Where Giornata = 10

还有:

 Select *
From Partite
Where Giornata = 10

我想计算所有冠军筹码的一名球员和另一名球员之间的头对头排名。比赛将每 9 个比赛日重复一次(例如,球员 1 将在第 10 场比赛日和第 19 场比赛日对阵球员 2)。 这是我所期待的:

为了获得玩家的胜利,条件是玩家.points > OtherPlayer.points。例如在 MatchDay10 中,如果 Player1 获得 4 分,而 Player 2 获得 1 分,则 Player1 与 Player2 有 1 次正面交锋。 我希望尽可能清楚。所以我的问题是:是否可以获得此范围的 SQL 查询?如果是,那是什么?提前感谢您的回复。

更新

属性名称是 FantaAllenatore,而不是表 RisultatiFantaAllenatori 中的 FantaAllenatori。在所有情况下,通过这个查询,有可能拥有冠军筹码的所有不同玩家:

    Select Cognome as FantaAllenatore
From FantaAllenatori

【问题讨论】:

  • SQL Server 是如何参与的? (不要标记案例中未使用的产品...)
  • 我使用的数据库只是用来存储数据。我创建的这个项目只是我自己的。你的意思是别的吗?数据库查询将在 php 页面下执行。你的意思是别的吗?
  • 我只是问您使用的是哪种数据库产品。 MySQL 是一种产品,而 MS SQL Server 是另一种产品。
  • 我在这个问题中没有看到提到 MS sql-server 的任何地方。
  • 在第一行我写道我正在使用 MySQL :)

标签: mysql


【解决方案1】:

我相信像下面这样的东西应该可以解决问题:

SELECT
    t1.G1 as Player,
    t1.G2 as OtherPlayer,
    SUM(CASE WHEN t2.Punteggio > t3.Punteggio THEN 1 ELSE 0 END) as `Win for the Player`,
    SUM(CASE WHEN t2.Punteggio < t3.Punteggio THEN 1 ELSE 0 END) as `Win for the OtherPlayer`
FROM
    Partite t1
    LEFT OUTER JOIN RisultatiFantaAllenatori t2 ON
        t1.G1 = t2.FantaAllenatori AND
        t1.Giornata = t2.Giornata
    LEFT OUTER JOIN RisultatiFantaAllenatori t3 ON
        t1.G2 = t3.FantaAllenatori AND
        t1.Giornata = t3.Giornata
GROUP BY t1.G1, t1.G2

这里的魔力在于 SUM(CASE...) 位,它比较每个玩家匹配的结果以确定谁。另一个重要的部分是两次加入您的第二张桌子,以便我们获得每场比赛的每位玩家的得分。

【讨论】:

  • 感谢您的回复。我收到此错误:错误代码:1054。“on 子句”中的未知列“t2.FantaAllenatori”。你认为是什么问题?
  • 您在表RisultatiFantaAllenatori 上有一个名为FantaAllenatori 的列吗?
  • 我把名字弄错了,是单数。所以RisultatiFantaAllenatori的属性名称是FantaAllenatori。现在 SQL 运行了,但我得到的结果并不完全正确。问题是一个玩家,可以是 Partite 表中的 G1 或 G2。例如 Player1 vs Player2 是一场比赛,但作为 G1 的 Player3 可以与 Player1 比赛。顺便问一下,你如何修改结果?这是 SQL dropbox.com/s/dwhcacu1wcxubgs/Result.pdf?dl=0 的结果
猜你喜欢
  • 2021-08-04
  • 1970-01-01
  • 2015-01-19
  • 1970-01-01
  • 2012-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多