Ini akan memberi Anda apa yang Anda butuhkan... Setiap kondisi klausa "ATAU" di mana, Anda dapat terus menambahkan sebagai item yang memenuhi syarat. Kemudian, cukup sesuaikan klausa "Memiliki" untuk memenuhi jumlah yang sama dengan kriteria yang Anda izinkan...Saya telah menempatkan tabel hubungan terlebih dahulu karena itu akan memiliki set kecocokan yang lebih kecil pada "Nilai" Kota atau nilai tipe.. . Pastikan Anda memiliki indeks pada tabel relasi pada kolom "VALUE".
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
Jika Anda ingin semua data objek aktual DARI hasil ini, Anda akan membungkusnya seperti...
select obj.*
from
( complete SQL statement above ) PreQuery
join Object obj on PreQuery.id_obj = obj.id