У меня есть необычный вопрос, который кажется простым, но у меня есть тупик в хранимой процедуре SQL Server.SQL Server Multiple Likes
У меня есть 2 стола, как описано ниже.
tblMaster
ID, CommitDate, SubUser, OrigFileName
Выборочные данные
ID CommitDate SubUser OrigFileName
----------------------------------------
1 2014-10-07 Test1 Test1.pdf
2 2014-10-08 Test2 Test2.pdf
3 2014-10-09 Test3 Test3.pdf
В приведенной выше таблице в основном заголовок таблицы, который отслеживает совершенные файлы. В дополнение к этому у нас есть таблица подробностей со следующей структурой.
tblIndex
ID, FileID (Linking column to the header row described above), Word
Образец данных:
1. 1, 1, Oil
2. 2, 1, oil
3. 3, 2, oil
4. 4, 2, tank
5. 5, 3, tank
Указанные строки представляют собой слова, которые мы хотим искать, и если определенные критерии совпадения возвращает соответствующее имя файла/строка заголовка ID , То, что я хотел бы понять, чтобы сделать это, если я делаю поиск
- Одним словом (например, «масло»), то система должна реагировать со всеми файлами, которые удовлетворяют критерии (простой случай, и выяснил,)
- Если поиск производится более чем одним словом (например, «масло» и «резервуар»), тогда мы должны видеть только второй файл, так как он является единственным, у которого в качестве ключевых слов есть масло и резервуар.
- Пробовал использовать LIKE «% oil%» и «% tank%», и это не приводило к тому, что никакие строки не создавались, поскольку одно значение не может быть как маслом, так и резервуаром.
- Пробовал делать «% масла%» или «% tank%», но я получаю файлы 1, 2 и 3, так как OR содержит все остальные строки.
- Наконец-то я узнал, что могу просто выполнить поиск по первому члену, а затем сохранить результаты в таблице temp и затем найти второй термин в этой второй таблице, и я получу то, что ищу. Проблема в том, что я точно не знаю, сколько предметов будет искать. Я не хочу создавать структуру, где мне постоянно приходится хранить данные в другую временную таблицу, если кто-то выполняет поиск по 6 «ключевым словам».
Любая помощь/идеи будут оценены.
это отлично работало. Я хотел бы задать другой вопрос, если это возможно. Если у меня есть более 2 слов для поиска «большого масляного бака», увеличивается ли значение HAVING COUNT до> 2? –
Да, да. Это число различных слов, которые нужно сопоставить, в вашем примере более 2, следовательно> 2. – Ndech
Большое спасибо. –