我需要创建一个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;
我想为每项运动选择所有应用程序并检查它们是否符合限制集。
因此,如果我选择所有篮球,我必须选择优先级高于第一优先级(或第二,第三......)的所有其他应用程序,如果最后一个优先级不满足限制。
答案 0 :(得分:1)
我不能100%确定我是否理解您的要求,但我猜您想优先考虑得分最高的人。
为了解决这个问题,我怀疑在SQL中可以做到这一切,我会通过php脚本来解决这个问题。我也假设这个脚本不必进行超级优化,因为它不会经常运行。
所以我的建议是在上表中添加一个名为assign的字段。
然后我会将所有运动声明为数组并指定最大值
$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.
如果您需要有关此代码特定部分的帮助,请回复。