Попробуйте это:
Select i.ItemID
From Inventory.Item i
Join Inventory.Category ic
On ic.ItemID = i.ItemID
Join Category.Category cc
On cat.CategoryID = ic.CategoryID
Join Inventory.Brand ib
On ib.BrandID = i.BrandID
Where CharIndex(@Term,
i.Description + '|' +
ic.Description + '|' +
cc.Description + '|' +
ib.Description) > 0
Поймите, что это приведет к полному сканированию всех четырех таблиц, поэтому, если эти таблицы будут большими, будет медленно. Но, учитывая то, что вы пытаетесь сделать, единственной альтернативой будет внедрение полнотекстовых индексов в базу данных ...
Кроме того, если возможно, что в одной из этих таблиц нет подходящей строки для условия соединения yr, необходимо выполнить все внешние соединения объединений и использовать IsNull()
для всех ссылок на столбцы ...
Select i.ItemID
From Inventory.Item i
Left Join Inventory.Category ic
On ic.ItemID = i.ItemID
Left Join Category.Category cc
On cat.CategoryID = ic.CategoryID
Left Join Inventory.Brand ib
On ib.BrandID = i.BrandID
Where CharIndex(@Term,
i.Description + '|' +
IsNull(ic.Description, '') + '|' +
IsNull(cc.Description, '') + '|' +
IsNull(ib.Description, '')) > 0