Google и Stack обычно помогают мне, куда я иду, но я застрял. Я верю, потому что я не ищу правильные термины. Было много сценариев, которые были близки, но либо я не понял результата, либо это было не то, что мне было нужно.
Мне кажется, я ищу слова "сопоставить" или "сравнить".
В моей таблице есть как поставщики вакансий, так и соискатели с очень нестандартными данными. Хорошая новость заключается в том, что каждое поле является заданным значением (выберите / флажок / радио)
вот доступные данные, около 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 |
-------+------------+-------------+------------+------------+---------
Это было близко, но я не был уверен, и я не мог заставить его применить к моим таблицам
Найти наиболее подходящую строку в MySQL (InnoDB)
Поскольку все значения являются выбранными, а не свободным текстом, кажется, что подход «сравнения функций» - это направление, но я называю это совпадением, потому что хочу вернуть совпадения в наиболее / лучшем порядке
Я ожидаю увидеть этот результат, когда столбец не совпадает или имеет менее одного совпадения в столбце.
Я хотел бы показать их в «ближайшем» порядке, я полагаю, что единственным способом определения «лучший / ближайший» будет количество столбцов match / true?:
столбцы сравниваются так:
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,2,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 |
-------+------------+-------------+------------+------------+---------
Так что комбинация «И» и «ИЛИ» собирается это сделать, или для этого требуются специальные MySQL «операторы / функции». MySQL становится немного сложнее для меня.
Обновление
Так как все значения (select / checkbox / radio), я могу установить значения в виде чисел (Manager = 1, Coach = 2 и т. Д.). Но пример строки тоже был бы великолепен, потому что у меня есть ощущение, что я буду бегать в это в другой таблице.