Я пишу программу для запроса к моей БД.У меня есть таблицы one_to_n tbl_user_service и tbl_user_competens
Учитывая, что два массива сыра отформатированы в строки, которые могут поместиться в предложение IN -> 'word ',' word_2 '... и т. д.
Я бы запросил всех пользователей с соответствующей услугой и порядком по количеству совпадающих конкурентов, которые у них есть.
Мой запрос на данный момент выглядит следующим образом
$sql = "SELECT DISTINCT tbl_users.* FROM tbl_users
INNER JOIN tbl_user_service
ON tbl_users.region = '$region'
AND tbl_user_service.fld_service IN ($services_in)
INNER JOIN tbl_user_competens
ORDER BY FIELD(tbl_user_competens, $competens_in)
";
Полученные мной результаты верны, я ищу, как их отсортировать на основе совпаденийможно найти для данного user_id в tbl_user_competens
test_drive и требуемых результатах
Query_Data :
Region : "Some_State"
Services : 'Webdevelopment', 'Some Service'
Competens : 'React JS', 'Native JS'
tbl_users:
fld_user_id : 1 Region : "Some_State"
fld_user_id : 2 Region : "Some_State"
fld_user_id : 3 Region : "Some_State"
tbl_user_services :
fld_user_id : 1 service : 'Webdevelopment'
fld_user_id : 2 service : 'Webdevelopment'
fld_user_id : 3 service : 'Webdevelopment'
tbl_user_competens :
fld_user_id : 1 competens : 'React JS'
fld_user_id : 1 competens : 'Native JS'
fld_user_id : 2 competens :'React JS'
Результат должен быть
Пользователь 1, так как 2 совпадающих участникаПользователь 2 с 1 совпадением конкурирует Пользователь 3 с 0 совпадением конкурирует