Du måste lägga till ett predikat för varje namn/värdekombination:
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')
(Jag ber om ursäkt om min SQL Server-dialekt lyser igenom)
För att göra ett godtyckligt antal jämförelser, måste du generera SQL och köra den.
Som sagt i en kommentar visar detta att EAV är en smärta (ett anti-mönster, verkligen), men jag vet av erfarenhet att det ibland helt enkelt inte finns något alternativ om vi är bundna till en relationsdatabas.