我們有一張發票表。發票有一個所有者和客戶,都鏈接到資源表的id字段。資源表包含可能在其下有「兒童」業務的企業。我有一個檢查,如果當前的業務是在owner_id或CUSTOMER_ID像這樣的查詢:如何從結果中檢查多個ID在SQL中的一行中的多個ID列?
SELECT * FROM invoices i WHERE @BusinessId IN (i.owner_id, i.customer_id)
我目前所面對的問題是,我需要驗證,如果企業或其子企業都在owner_id或customer_id。我們有一個返回表從資源表中包含業務ID如果我查詢它像這樣一個功能:
select business_id from dbo.vfn_child_business(@BusinessId , 'Y')
的「Y」參數基本上與子業務一併返回主父ID在結果(基本上尋找一個企業的兒童業務,幷包括自己)。
我無法弄清楚如何查詢說
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)
但我得到這個錯誤:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
請任何人都幫幫我?
還沒有,但我已經簡化我查詢了很多東西。這是跨越大約15個表的400行查詢的一小部分。 :)我現在要離開一天,但我會試着看看我是否可以在明天加入。我最初的想法是,我不能。 – lloydphillips
表值函數當然可以加入,所以這當然是可能的。如果證明是一個問題,請在此留言,我會看看。 – MatBailie