Я выполняю простой запрос типа
DECLARE @find varchar(60) = 'findme';
SELECT *
FROM Queue
WHERE
column1 LIKE '%' + @find + '%' OR
column2 LIKE '%' + @find + '%' OR
column3 LIKE '%' + @find + '%' OR
....
Это просто говорит мне каждую запись, где строка 'findme' находится в любом столбце.
Теперь проблема в том, что в ColumnExtra всегда будет строка, содержащая имя другой таблицы (например, дополнительную информацию можно найти здесь), а «ColumnName» содержит идентификатор текущего пользователя.
Мне нужно искать в таблице «ColumnName» (для данного пользователя «ColumnName») также и «findme», и для каждого попадания, неважно, только в исходной таблице или в таблице «ColumnName» или в обеих, Мне нужна вся информация из обеих возможных таблиц.
Например:
Оригинальный стол
User 1 2 3
-----------------------------------------
Column1: string1 string1 string3
Column2: string1 string2 string3
Column3: findme string2 string3
ColumnExtra: table1 table3 table4
ColumnName: uid1 uid2 uid3
Таблица1 (для пользователя 1)
C1: asdfg
C2: qwert
Таблица3 (для пользователя 2)
D1: poiu
D2: trew
Table4 (для пользователя 3)
E1: aaaaaa
E2: findme
Запрос SQL должен возвращать следующий результат:
User 1 3
--------------------------------
Coulmn1: string1 string3
Coulmn2: string1 string3
Coulmn3: findme string3
CoulmnExtra: table1 table4
CoulmnName: uid1 uid3
C1: asdfg
C2: qwert
E1: aaaaa`enter code here`a
E2: findme
Если это невозможно, то следующим лучшим решением будет
User 1 3
Column1: string1 string3
Column2: string1 string3
Column3: findme string3
ColumnExtra: table1 table4
ColumnName: uid1 uid3
C1: asdfg whateverishere
C2: qwert whateverishere
E1: whatev aaaaaa
E2: whatev findme