php - Sql匹配多个条件,按最差技能分组用户
问题描述
大家好。
我需要按参与者的 5 个最差技能对他们进行分组,以创建教室。
我还需要知道他们生活在世界的不同地区(美洲、欧洲和亚洲)。
我需要在时区彼此不太远的地方混合和匹配它们(美洲与欧洲的一些地区和亚洲与欧洲其他地区)。
我有 160 名参与者,我需要创建12 个教室。
参会人员表:
id name country_id
------------------
1 | name | 8 |
2 | name2 | 3 |
3 | name | 4 |
4 | name2 | 8 |
and so on....
国家表:
id name
------------------
1 | Japan |
2 | USA |
3 | Australia |
4 | UK |
and so on....
技能
id name
------------------
1 | skill1 |
2 | skill2 |
3 | skill3 |
4 | skill4 |
and so on....
参与者技能表:
participant_id skill_id
------------------
1 | 2 |
1 | 4 |
1 | 3 |
1 | 5 |
1 | 9 |
2 | 1 |
2 | 4 |
2 | 3 |
2 | 6 |
2 | 9 |
3 | 2 |
3 | 7 |
3 | 8 |
3 | 5 |
3 | 9 |
and so on....
理想情况下,结果会让我得到这样的结果:
group_id participant_id country_id
----------------------------------
1 | 5 | 1 |
1 | 63 | 4 |
1 | 71 | 5 |
1 | 95 | 4 |
1 | 18 | 5 |
1 | 83 | 8 |
1 | 44 | 1 |
1 | 4 | 8 |
1 | 73 | 5 |
1 | 36 | 12 |
1 | 53 | 12 |
1 | 12 | 8 |
1 | 21 | 5 |
1 | 10 | 4 |
2 | 34 | 13 |
2 | 22 | 13 |
2 | 2 | 15 |
and so on...
知道如何让它工作吗?
非常感谢您,祝您编码愉快^^
乙
**更新 我通过运行此 SQL 查询设法选择了 5 个最差的技能:
select p.id, p.name, s.id from `participants` p
left join `regions` r on p.`region_id` = r.`id`
left join `participant_skill` ps on p.`id` = ps.`participant_id`
left join skills s on ps.`skill_id` = s.`id`
where ps.`rank` > 11
现在我不知道如何根据他们最差的技能和地区将参与者匹配在一起。
这是表格的转储。 https://www.db-fiddle.com/f/rqtP5HnoyiwSKiy9Jmx8KV/1
我希望这会有所帮助
;)
解决方案
推荐阅读
- javascript - VueJS,将数据从组件传递到另一个
- c++ - 在 Qt 5.10.1 中工作时,SQLITE INSERT 在 Qt 5.0.2 中给出“参数计数不匹配”
- angular - 在 Angular 中设置 LOCALE_ID 而不使用特定的 URL
- c++ - 我可以从 C++ 中的派生实例访问指向基实例的指针吗?
- python - 在> 2000000个项目的列表中查找重复索引的快速方法
- c++ - 解析用 Tab 分隔的大文件 (~2 Gb) 的最快方法
- ml.net - CrossValidate 抛出错误 System.ArgumentOutOfRangeException: 'Score column 'Score' not found Parameter name: name'
- r - case_when 和 lag 中的 dplyr 行为
- python - 使用 Selenium、Chrome 和 Python 下载 PDF
- node.js - 从 MongoDB 集合中清除旧数据以仅保留一定数量(不基于日期)