Опитайте това:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
Ето какво се случва...
Първо, вземете списъка с идентификатори на собственост, които имат удобствата, от които се интересувате:
SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
След това стеснете списъка, за да включите само тези идентификатори на имоти, които имат повече от едно удобство. Групирането по property_id обединява резултатите в уникални групи въз основа на кой property_id принадлежат. След това просто преброяваме броя на amenity_names във всяка група и проверяваме дали е 2 или повече.
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
Едно предположение в кода по-горе е, че няма да имате едно и също amenity_name, свързано с property_id повече от веднъж. За да премахнете проблеми, свързани с това, променете HAVING
клауза да включва DISTINCT
за да премахнете дубликатите, но не го добавяйте, освен ако не ви трябва.
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2