У меня есть API, который связывается с базой данных со следующими таблицами:
QUESTS
+----------+------------+
| quest_id | quest_name |
+----------+------------+
| 1 | Q001 |
| 2 | Q002 |
| 3 | Q003 |
| 4 | Q004 |
| 5 | Q005 |
+----------+------------+
НАВЫКИ
+----------+------------+
| skill_id | skill_name |
+----------+------------+
| 1 | S001 |
| 2 | S002 |
| 3 | S003 |
| 4 | S004 |
| 5 | S005 |
+----------+------------+
SKILL_PREREQUISITES
+----------+-----------------------+-------------+
| quest_id | prerequisite_skill_id | skill_value |
+----------+-----------------------+-------------+
| 1 | 2 | 50 |
| 1 | 1 | 45 |
| 4 | 2 | 25 |
| 4 | 3 | 60 |
| 5 | 4 | 50 |
+----------+-----------------------+-------------+
Квесты соответствуют уровням в игре, а навыки приобретаются игроками во время игры.Таблица SKILL_PREREQUISITE
поддерживает необходимые навыки, необходимые игроку, прежде чем он сможет участвовать в квесте.
Задача
Конечная точка API-интерфейсасписок навыков, которыми обладает игрок, а также уровень навыка (skill_value) соответствующего навыка, например:
[
{
"key": 1, //skill ID
"value": 45 //skill value
},
{
"key": 2,
"value": 60
}
...
]
Теперь мой вариант использования , чтобы использовать эти значения и запроситьбаза данных для получения списка квестов, в которых игрок имеет право участвовать на основе skill_id
, а также skill_value
Пример
Предположим, API получаетследующее отображение значения навыка-навыка:
skill-value map: [{1,50}, {2,60}, {4,50}]
На основании этого игрок с вышеуказанным набором навыков может участвовать в квестах 1 и 5, но не в 4, поскольку 4 требует навыка 3 с 60 очками.
Попытка найти решение
Мне удалось написать запрос (благодаря предыдущему вопросу, который я разместил!), Чтобы определить задания, соответствующие идентификаторам навыков, но японятия не имею как отфильтроватьдальше в запросе, основанном на значении навыка.
Мне интересно, возможно ли это на этом этапе и нужно ли мне выполнять дополнительную обработку на сервере, чтобы получить требуемый результат.
Fiddle для моей попытки найти решение: https://www.db -fiddle.com / ж / s2umHS1wz3Q8ibwUhKDas6 / 1