Я пишу основную поисковую систему, идущую против внутреннего хранилища данных.Подсчет совпадений в Oracle
Предположим, у меня есть таблица «навыки», как это:
EmpID Skills
----- --------------------
1 ,Java,
2 ,Java,,C#,
3 ,C#,,Ruby,
4 ,Java,,C#,,Python,
5 ,Python,,C#,
Мне нужно написать запрос, который ищет таблицу навыков, в поисках совпадений.
Если я ищу Java И C#, я хотел бы, чтобы эти результаты:
EmpID Skills Matches
----- ----------------- -------
2 ,Java,,C#, 2
4 ,Java,,C#,,Python, 2
Если я ищу Java ИЛИ C#, я хотел бы, чтобы эти результаты , по заказу Матчи:
EmpID Skills Matches
----- ------------------ -------
2 ,Java,,C#, 2
4 ,Java,,C#,,Python, 2
1 ,Java, 1
3 ,C#,,Ruby, 1
5 ,Python,,C#, 1
Как написать этот запрос в SQL (Oracle 11)?
Спасибо!
Как вы планируете обеспечить «пользовательский ввод» (навыки, чтобы быть совпавшие, и выбор «ИЛИ» против «И» и т.д.?) Какой выбор похож на И и ИЛИ должны там быть доступны при вы вводите три навыка для поиска или четыре навыка? Просто количество навыков? – mathguy
У нас есть предопределенный список навыков и показать их в списке с несколькими выборами. Пользователь также может установить флажок, чтобы сделать все необходимые навыки (И), или оставить его непроверенным (ИЛИ). – WOPR
Ох - так что вы будете искать ВСЕ навыки, или ЛЮБЫЕ ОДНИ ИЗ навыков - не другие комбинации. Затем в представленном мной решении (которое работает для выбора OR, соответствие ANY ONE), вы можете получить версию AND (соответствие всем навыкам), добавив предложение WHERE во внешний выбор - выбирая только строки, в которых количество совпадений равна общему количеству навыков. – mathguy