U moet een predikaat toevoegen voor elke naam/waarde-combinatie:
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')
(Mijn excuses als mijn Sql Server-dialect doorschijnt)
Om een willekeurig aantal vergelijkingen te maken, moet u de SQL genereren en uitvoeren.
Zoals in een opmerking gezegd, laat dit zien dat EAV lastig is (eigenlijk een anti-patroon), maar ik weet uit ervaring dat er soms gewoon geen alternatief is als we gebonden zijn aan een relationele database.