पहला विकल्प यह होगा कि जहां क्लॉज मौजूद है वहां दूसरे को जोड़ा जाए।
declare @fruitId1 int;
set @fruitId1=1;
declare @fruitId2 int;
set @fruitId2=3;
select *
from @Test
where
BasketFruits.exist('/FRUITS/FID[.=sql:variable("@fruitId1")]')=1 and
BasketFruits.exist('/FRUITS/FID[.=sql:variable("@fruitId2")]')=1
एक अन्य संस्करण xquery कथन में हिट की गणना करते हुए दोनों चरों का उपयोग करना होगा।
select *
from @Test
where BasketFruits.value(
'count(distinct-values(/FRUITS/FID[.=(sql:variable("@fruitId1"),sql:variable("@fruitId2"))]))', 'int') = 2
ऊपर दिए गए दो प्रश्न ठीक काम करेंगे यदि आप जानते हैं कि क्वेरी लिखते समय आप कितने FID मापदंडों का उपयोग करने जा रहे हैं। यदि आप ऐसी स्थिति में हैं जहां FID की संख्या भिन्न होती है, तो आप इसके बजाय कुछ इस तरह का उपयोग कर सकते हैं।
declare @FIDs xml = '<FID>1</FID><FID>3</FID>'
;with cteParam(FID) as
(
select T.N.value('.', 'int')
from @FIDs.nodes('FID') as T(N)
)
select T.BasketName
from @Test as T
cross apply T.BasketFruits.nodes('/FRUITS/FID') as F(FID)
inner join cteParam as p
on F.FID.value('.', 'int') = P.FID
group by T.BasketName
having count(T.BasketName) = (select count(*) from cteParam)
क्वेरी में उपयोग किए जाने वाले मानों को रखने के लिए @FIDs वैरिएबल को XML के रूप में बनाएं।
आप यहां अंतिम क्वेरी का परीक्षण कर सकते हैं:https://data .stackexchange.com/stackoverflow/q/101600/relational-division-with-xquery