У нас есть таблица счетов. Счет-фактура имеет владельца и клиента, оба поля идентификатора которого связаны с таблицей ресурсов. Таблица ресурсов содержит предприятия, которые могут иметь дочерние предприятия. У меня есть запрос, который проверяет, находится ли текущий бизнес в owner_id или customer_id, например:
SELECT * FROM invoices i WHERE @BusinessId IN ( i.owner_id, i.customer_id )
Проблема, с которой я столкнулся на данный момент, заключается в том, что мне нужно проверить, указан ли бизнес или его дочерние предприятия в owner_id или customer_id. У нас есть функция, которая возвращает таблицу, содержащую бизнес-идентификаторы из таблицы ресурсов, если я сделаю запрос следующим образом:
select business_id from dbo.vfn_child_business(@BusinessId , 'Y')
Параметр 'Y' в основном возвращает основного родителя вместе с идентификаторами дочерних предприятий в результатах (по сути, ищет дочерние предприятия в бизнесе и включает себя).
Я не могу понять, как запросить, чтобы сказать
SELECT * from Invoices
where ANY OF MY RESULTS FROM CHILD BUSINESS FUNCTION IN ( i.owner_id, i.customer_id ).
Я пробовал:
... WHERE (select business_id
from dbo.vfn_child_business(@BusinessId , 'Y'))
IN ( i.owner_id, i.customer_id )
Но я получаю эту ошибку:
Подзапрос вернул более 1 значения. Это не разрешено, когда
подзапрос следует =,! =, <, <=,>,> = или когда подзапрос используется как
выражение.
Может кто-нибудь помочь?