У меня есть две таблицы, к которым мне нужно присоединиться:
Таблица VarValues имеет поле Value, которое является varchar и содержит настраиваемые свойства, которые могут быть text og int в зависимости от типа свойства
Таблица Vars имеет тип свойства.
В элементах таблицы есть элементы, в частности идентификатор и данные, которые проиндексированы в полнотекстовом формате, и мне нужно выполнить поиск.
Когда я запрашиваю вот так:
SELECT
distinct SelectedItems.itemid,SelectedItems.fileid
FROM
(
SELECT [values].itemid, convert(int, [value]) as fileid
FROM
VarValues [values]
JOIN Vars vars ON [values].VarID = vars. ID
WHERE
[type] = 6 --This type is an int
AND
[values].[value] <> ''
) as SelectedItems
JOIN containstable(items, *, '<some query>') as items ON SelectedItems.fileid = items.[KEY]
Внутренний запрос возвращает целые числа только в качестве fileid, но когда весь запрос выполняется, я получаю сообщение об ошибке, поскольку первая строка в VarValues содержит текст, хотя тип не равен 6.
Не оптимизирует ли оптимизатор запросов мой внутренний запрос? Как я могу остановить это? Или я делаю это совершенно неправильно?