आपको प्रत्येक नाम/मूल्य संयोजन के लिए एक विधेय जोड़ना होगा:
SELECT <whatever you need>
FROM Entity_Table et
WHERE et.e_name = 'Joe'
AND EXISTS (SELECT 1
FROM AttributeValue_Table avt
JOIN Entity_AttrVal ea ON ea.e_id = et.e_id
WHERE ea.a_id = avt.av_id
AND avt.prop_name = 'color'
AND avt.prop_value = 'black')
AND EXISTS (SELECT 1
FROM AttributeValue_Table avt
JOIN Entity_AttrVal ea ON ea.e_id = et.e_id
WHERE ea.a_id = avt.av_id
AND avt.prop_name = 'whiskers'
AND avt.prop_value = 'short')
(यदि मेरी Sql सर्वर बोली अच्छी लगती है तो मैं क्षमा चाहता हूँ)
तुलनाओं की मनमानी संख्या करने के लिए, आपको SQL उत्पन्न करना होगा और इसे निष्पादित करना होगा।
जैसा कि एक टिप्पणी में कहा गया है, यह दिखाता है कि ईएवी एक दर्द है (वास्तव में एक विरोधी पैटर्न), लेकिन मुझे अनुभव से पता है कि कभी-कभी कोई विकल्प नहीं होता है यदि हम एक रिलेशनल डेटाबेस से बंधे हैं।