Zkuste toto:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
Tady je to, co se děje...
Nejprve si získejte seznam ID nemovitosti, která mají vybavení, o které máte zájem:
SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
Poté seznam zúžte tak, aby zahrnoval pouze ta ID nemovitosti, která mají více než jedno vybavení. Seskupování podle property_id seskupuje výsledky do jedinečných skupin podle toho, ke kterému property_id patří. Poté jednoduše spočítáme počet jmen amenity v každé skupině a zkontrolujeme, zda je 2 nebo větší.
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
Jedním z předpokladů ve výše uvedeném kódu je, že nebudete mít stejný amenity_name spojený s property_id více než jednou. Chcete-li odstranit problémy s tím související, změňte HAVING
klauzule pro zahrnutí DISTINCT
k odstranění duplikátů, ale nepřidávejte je, pokud to nepotřebujete.
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2