0

我需要创建一个 PHP 脚本,从 MySQL 表中选择具有多个优先级的数据?

MySQL 的每一行都是一个应用程序,以运动员得分作为评分的关键。

体育栏目为每个希望参加精确运动的参与者提供优先权。每项运动的名额有限。

这意味着如果他的第一个优先级没有满足(例如,他在列表中排名第 31,但只有 30 个可用名额),那么下一个优先级必须如他所愿。

一个例子:

身份证 | 姓名 | 网球 | 游泳 | 篮球 | 跑步 | 分数|
-------------------------------------------------- ---------------------
1 |约翰 |0 |1 |2 |3 |80 |
-------------------------------------------------- ---------------------
1 |账单 |1 |2 |3 |4 |65 |
-------------------------------------------------- ---------------------
1 |阿诺德 |0 |1 |0 |2 |70 |
-------------------------------------------------- ---------------------

每个弟子都有其最大的参与者。例如:

$max_tenis = 5;

$max_swiming = 8;

$max_basketball = 10;

$max_runing = 9;

我想为每项运动选择所有应用程序并检查它们是否满足限制设置。

因此,如果我选择所有篮球,如果最后一个优先级不满足限制,我必须选择优先级高于第一优先级(或第二、第三......)的所有其他应用程序。

4

1 回答 1

1

我不是 100% 确定我是否理解您的要求,但我猜您想优先考虑得分最高的人。

为了解决这个问题,我怀疑它是否可以在 SQL 中完成,我会通过一个 php 脚本来解决这个问题。我还假设此脚本不必进行超级优化,因为它不会经常运行。

所以我的建议是在上表中添加一个名为assigned 的字段。

然后我会将所有运动声明为一个数组并分配最大值

$sport_slots = array("running" => 9, "basketball" => 10);

然后我会在桌子上数一数,然后在这个数上循环一段时间,这样我们就知道我们将与所有人一起工作。

然后我会选择得分最高的人。

select * from `people` where `score`=(select max(`score`) from people) AND assigned=0;

有了这些结果...确定他们选择哪种运动方式参加的项目...确保它在 sport_slots 数组中有一个插槽(!= 0)。如果是,则从运动条目中减去 1 并更新要分配的条目 = 1。

如果您需要有关此代码特定部分的帮助,请回复。

于 2013-07-03T14:01:32.673 回答