Dit zou je moeten geven wat je nodig hebt... Elk van de "OF"d waar-clausulevoorwaarden, kun je gewoon blijven toevoegen als een gekwalificeerd item. Pas vervolgens de clausule "Hebbend" aan om aan hetzelfde aantal te voldoen als de criteria die u toestaat... Ik heb de tabel met relaties eerst geplaatst, want dat zou een kleinere overeenkomende set hebben op de "Waarde" van de stad of typ waarden. Zorg ervoor dat u een index heeft in de relatietabel in de kolom "WAARDE".
SELECT STRAIGHT_JOIN
rel.id_obj
from
relations rel
join attributes atr
on rel.id_addr = atr.id
where
( rel.value = 'Apartment' AND atr.name = 'Type' )
or ( rel.value = 'Some City' AND atr.name = 'City' )
group by
atr.id_obj
having
count(*) = 2
limit
0, 20
Als u alle feitelijke objectgegevens van deze resultaten wilt, zou u het als volgt inpakken...
select obj.*
from
( complete SQL statement above ) PreQuery
join Object obj on PreQuery.id_obj = obj.id