【问题标题】:Query with each value only used once MySql查询每个值只使用一次 MySql
【发布时间】:2013-12-17 14:35:45
【问题描述】:

我有问题!

我有一个简单的表,其中包含 player_1player_2played

+---------+----------+----------+
| player1 | player2  |  played  |
+---------+----------+----------+
|      1  |        2 |    1     |
|      1  |        3 |    2     |
|      1  |        4 |    1     |
|      1  |        5 |    0     |
|      1  |        6 |    0     |
|      2  |        3 |    3     |
|      2  |        4 |    2     |
|      2  |        5 |    1     |
|      2  |        6 |    3     |
|      3  |        4 |    1     |
|      3  |        5 |    2     |
|      3  |        6 |    0     |
|      4  |        5 |    3     |
|      4  |        6 |    1     |
|      5  |        6 |    3     |
+---------+----------+----------+

等等……有78条记录,因为总共有13名玩家。

我想要一个结果,告诉我哪些“比赛”玩得最少。所以,例如一个人上次生病了,不能玩,那个人和其他玩家之间的游戏次数较低。这场比赛更有可能出现在结果中。

但是在每个显示 6 场比赛的结果中(1 名球员有一些时间),一名球员只能显示一次!但是,最少玩的游戏也必须在结果中。 (嗯,最后一部分很简单,ORDER BY played ASCLIMIT 6)...

如何让每 13 名玩家(好吧,没有那个)进入结果?

一个不错的结果是(好吧,现在我只想要 3 场比赛,因为在这个例子中只有 6 名玩家)... 每个玩家在这一轮中进行一场比赛,并通过排序最少的比赛来选择比赛。其余的只是在填写中。

+---------+----------+----------+
| player1 | player2  |  played  |
+---------+----------+----------+
|      1  |        5 |    0     |
|      2  |        4 |    1     |
|      3  |        6 |    0     |
+---------+----------+----------+

【问题讨论】:

  • 你能提供一个期望结果的例子吗?
  • 此外,如果您可以更具体地了解数据的结构,也不会受到影响。你的表格有哪些列,记录是什么样的?
  • 嗯,我不明白 :-( 哦,好吧,也许我明白了,这对我来说太复杂了!即,使用每个可以实现的最小 SUM(播放)是多少只播放一次?这听起来像是最短路径问题。

标签: php mysql


【解决方案1】:

您可以将其视为图形问题。 假设每个玩家是一个节点,表中的每条记录代表一个弧,一个权重为“已玩”的加权弧,与该弧相连的 2 个玩家之间的游戏次数。

现在,您正在寻找一种算法来找出最少打的 6 场比赛(如果我理解正确的话,就是下一轮要打的 6 场比赛),前提是每个球员每轮只打一次。 我建议使用贪心算法:

 1. Sort arcs ascending.
 2. While there are still arcs left.
    2.1 Remove first arc and add to round_games.
    2.2 Remove all arcs with any participating nodes in the previous arc.

【讨论】:

  • 您确实可以将其视为正在播放的回合。现在,我是 MySQL 的初学者,我明白你在说什么,但是要将其翻译成 MySQL 查询,我真的不知道。每个玩家都必须玩,但玩得最少的玩家之间的游戏优先。
  • 如果我要实现它,我不会只使用 sql,而是用实际的编程语言编写它(你在标签中声明了 php)。我会将所有行加载到对象,并将算法应用于对象。
  • 是的,我也在使用 php。我现在有了一个想法,我真的不知道它是否有效,但是......我会尝试。感谢所有 cmets 和帮助。
猜你喜欢
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
  • 2013-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多