脚本宝典收集整理的这篇文章主要介绍了php – MySQL查询过滤器和匹配行上的行类似于作业匹配或功能比较,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我相信我正在寻找“匹配”或“比较”.
我的桌子有工作提供者和求职者都有非常自定义的数据..好消息是每个字段都是一个设定值(选择/复选框/收音机)
这里有可用的数据,大约有17个技能组列
tyPE | posITion | skillset 1 | checkBox | skillset 3 | salary -------+------------+-------------+------------+------------+--------- Job | Sales | Talent 1 | 1,2,3 | Talent 3 | 50 Seeker1| Manager | Avail | avail | avail | -------+------------+-------------+------------+------------+-------- Job | Sales | Talent 1 | 2 | Talent 3 | 50 Seeker2| Manager | Avail | avail | avail | -------+------------+-------------+------------+------------+--------- Job | Sales | Talent 1 | 2,3 | Talent 3 | 60 POSTED | Manager | Needed | Needed | Needed | -------+------------+-------------+------------+------------+--------- Job | Sales | Talent 1 | 2 | Talent 3 | 50 Seeker3| Manager | Avail | avail | NOT avail | -------+------------+-------------+------------+------------+---------
这很接近,但我不确定,我无法将它应用于我的桌子
Find best matching row in MySQL (InnoDB)
由于所有值都是选择而不是自由文本,所以看起来像“特征比较”方法是方向,但我称之为匹配,因为我想以最佳/最佳顺序返回匹配
当列不匹配或列中的匹配少于一个时,我希望看到此结果.
我希望以“最接近”的顺序显示这些,我想,确定“最佳/最接近”的唯一方法是匹配/真的列数?:
列比较如下:
position = Sales manager : Match skillset 1 = Talent1 avail : Match checkBox = 1 of 2 needed : Match (partial) skillset 1 = Talent3 NOT avail : NO Match Salary = < = > : Match Columns match = [4]
所以这个人发布了一份工作
Job | Sales | Talent 1 | 2,3 | Talent 3 | 60 POSTED | Manager | Needed | Needed | Needed | -------+------------+-------------+------------+------------+---------
他的比赛结果将从高到低排序:
Seeker 1| match | match | match (IN)| match | TRUE [5] Seeker 3| match | match | match (IN)| NO | TRUE [4] Seeker 2| match | match | NO (none)| NO | TRUE [3] type | position | skillset 1 | checkBox | skillset 3 | salary -------+------------+-------------+------------+------------+--------- Job | Sales | Talent 1 | 1,3 | Talent 3 | 50 Seeker1| Manager | Avail | avail | avail | -------+------------+-------------+------------+------------+-------- Job | Sales | Talent 1 | 2 | Talent 3 | 50 Seeker3| Manager | Avail | avail | NOT avail | -------+------------+-------------+------------+------------+--------- Job | Sales | Talent 1 | 1 | Talent 3 | 50 Seeker2| Manager | Avail | avail | avail | -------+------------+-------------+------------+------------+---------
“AND”和&组合也是如此. “或”要去做,或者这需要特殊的MysqL“语句/功能”. MysqL对我来说有点复杂.
更新
由于所有值都是(select / checkBox / radio),我可以将值设置为数字(Manager = 1,Coach = 2等)但是字符串示例也会很棒,因为我觉得我会遇到另一张桌子.
>求职者(seeker_id,姓名,电子邮件地址,电话号码等)
>技能(skill_id,名称)
>职位(job_id,姓名)
现在,如何将它们链接在一起?好吧,考虑一下这些关系:
>求职者有很多技能
>一个职位有很多技能
>一项技能有很多工作
>一项技能有很多寻求者
目前,您通过拥有多个列来解决这些“有很多”关系,但正如评论中所述,来之不易的数据库经验告诉人们您很快会以这种方式解开.你的SQL查询会很尴尬,如果你有一些非常重要的数据,它们也会很慢.
由于两个方向上的关系都很多,因此这些关系被称为“多对多”关系.要解决这些问题,您需要中间表,如下所示:
> seeker_skill(seeker_id,skill_id)
> job_skill(job_id,skill_id)
因此,要创建搜索者技能,请将搜索者的主键和技能的主键插入seeker_skill表.此表不需要主键列,因为两个外键足以自行定义主键.
工作技能也是如此.
这种设计建议将使您重回正轨.我没有添加任何sql,因为我认为对您自己进行研究是有价值的.如果你有一个数据库,请创建我建议的设计,并用一些测试数据填充它.然后,开始编写一个简单的查询,例如列出特定用户或工作的技能.
以上是脚本宝典为你收集整理的php – MySQL查询过滤器和匹配行上的行类似于作业匹配或功能比较全部内容,希望文章能够帮你解决php – MySQL查询过滤器和匹配行上的行类似于作业匹配或功能比较所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。