Coba ini:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
Inilah yang terjadi...
Pertama, dapatkan daftar ID Properti yang memiliki fasilitas yang Anda minati:
SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
Kemudian persempit daftar untuk memasukkan hanya ID Properti yang memiliki lebih dari satu kemudahan. Pengelompokan berdasarkan property_id menggabungkan hasil ke dalam grup unik berdasarkan property_id mana mereka berasal. Kemudian, kita cukup menghitung jumlah amenity_names di setiap grup dan memeriksa apakah itu 2 atau lebih.
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
Satu asumsi dalam kode di atas adalah Anda tidak akan memiliki amenity_name yang sama yang terkait dengan property_id lebih dari sekali. Untuk menghilangkan masalah yang terkait dengan itu, ubah HAVING
klausa untuk menyertakan DISTINCT
untuk menyingkirkan duplikatnya, tetapi jangan menambahkannya kecuali Anda membutuhkannya.
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2