Dette burde give dig, hvad du har brug for... Hver af "ELLER"d hvor-klausulens betingelser, kan du bare blive ved med at tilføje til som en kvalificeret vare. Derefter skal du bare justere "Having"-klausulen for at opfylde det samme antal som de kriterier, du tillader...Jeg har sat relationstabellen først, da det ville have et mindre matchet sæt på "Værdi" af by- eller typeværdier. Sørg for, at du har et indeks på relationstabellen i kolonnen "VÆRDI".
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
Hvis du vil have alle de faktiske objektdata FRA dette resultat, vil du pakke det noget i retning af...
select obj.*
from
( complete SQL statement above ) PreQuery
join Object obj on PreQuery.id_obj = obj.id