SELECT name
FROM FRUIT
WHERE color IN ( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;
आप ऐसा करने के लिए संग्रहों का भी उपयोग कर सकते हैं:
CREATE FruitColorTableType AS TABLE OF FRUIT.COLOR%TYPE;
/
SELECT DISTINCT
Name
FROM FRUIT f
WHERE FruitColorTableType( 'Red', 'Green' )
SUBMULTISET OF
CAST( MULTISET(
SELECT Color
FROM FRUIT c
WHERE c.name = f.name
) AS FruitColorTableType );
या:
SELECT name
FROM FRUIT
WHERE color MEMBER OF FruitColorTableType( 'Red', 'Green' )
GROUP BY name
HAVING COUNT( DISTINCT color ) = 2;
और यदि आप इसे एक फ़ंक्शन/प्रक्रिया के रूप में फिर से लिखते हैं तो आप संग्रह को तर्क के रूप में पास कर सकते हैं और CARDINALITY()
का उपयोग कर सकते हैं संग्रह के आकार को हार्ड कोडिंग करने के बजाय कार्य करें।
(इन अंतिम दो प्रश्नों का परीक्षण नहीं किया गया है, इसलिए कुछ त्रुटियां हो सकती हैं)