繁体   English   中英

选择具有多个优先级和最大条目数的数据

[英]Selecting data with multiple priorities and limited max entries

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

MySQL的每一行都是几个“体育学科”的应用程序,运动员评分是评分的关键。

运动专栏是每个希望参加精确运动的参与者的优先事项。 每种运动的名额有限。

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

一个例子:

ID  | Name   | Tenis   | Swiming  |  Basketball | Runing     | Score|
-----------------------------------------------------------------------
1   |John    |0        |1         |2            |3           |80    |
-----------------------------------------------------------------------
1   |Bill    |1        |2         |3            |4           |65    |
-----------------------------------------------------------------------
1   |Arnold  |0        |1         |0            |2           |70    |
-----------------------------------------------------------------------

每个门徒都有最大的参加者。 例如:

$max_tenis = 5; 

$max_swiming = 8;

$max_basketball = 10;

$max_runing = 9;

我想为每种运动选择所有应用程序,并检查它们是否符合限制设置。

因此,如果我要选择所有篮球,则必须选择所有其他应用程序,如果最后一个优先级没有达到限制,则优先级要高于第一优先级(或第二,第三...)。

我不确定是否能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。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM