如何以公平的方式返回数据库结果 - MySQL,PHP

时间:2017-03-06 21:39:46

标签: php mysql sorting search

我正在创建一个函数,该函数根据几个不同的字段检索记录,然后存储这些记录,以便我们以后查询它们。

在查询记录时,如果记录符合另一组字段/标准的要求,我们会选择在其他地方使用的记录。

例如:

返回员工记录,以便根据技能组合,地点等字段选择其中一个新职位(管理层可能?)......

问题

假设我循环遍历这些存储的记录(在数组或类似的东西中),我检查数组中的第一个雇员是否适合该职位,然后找出他们是,所以然后将他们添加到职位,我&# 39; m忽略了已存储的其他x员工数量。我觉得这会是一个问题,因为可能会发现存储某个人的顺序可能会决定他们为该职位选择的可能性。

我认为这可以通过创建排序功能来解决,该功能可以根据雇主的偏好(位置,工资,可用性等)对存储的记录进行排序,但我不确定如何实现这一点。

我想知道是否有任何内置的MySQL函数可以帮助根据某些内容对记录进行排序?

这可能是我可能需要自己解决的问题,但我想我会问,以防万一我可以使用它。

我希望这个问题很明确。如果没有,请在下面评论。

1 个答案:

答案 0 :(得分:1)

只是大声思考 - 不会排序会产生你想要避免的同样问题 - 除非你能拿出加权分数......

create table as employees_to_consider as
select e.*, 
         availability_score*availablity_factor
       + salary_score*salary_factor
       + location_score*location_factor as weighted_score
from employees e
where -- whatever your criteria is for selection here
order by weighted_score

真正的任务是决定如何确定每个因素的得分以及适当的权重。

例如,薪水分数可以通过计算员工愿意为目标工作的比率来确定。如果它们匹配,则可以评分为50.该数字可以增加员工愿意在目标下工作的数量,并减少他们结束的数量。薪水非常重要,因此可能是33%。

同样,如果员工的生活时间为15分钟,则可以在75分,30分在50分,30分以上25分。位置不如薪水那么重要,所以得分为10%。

希望您能够为每项指标分配有意义的分数和因子。