Sie müssen für jede Name/Wert-Kombination ein Prädikat hinzufügen:
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')
(Ich entschuldige mich, wenn mein Sql Server-Dialekt durchscheint)
Um eine beliebige Anzahl von Vergleichen durchzuführen, müssten Sie die SQL generieren und ausführen.
Wie in einem Kommentar gesagt, zeigt dies, dass EAV ein Schmerz ist (eigentlich ein Anti-Pattern), aber ich weiß aus Erfahrung, dass es manchmal einfach keine Alternative gibt, wenn wir an eine relationale Datenbank gebunden sind.