Prøv dette:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
Her er hvad der sker...
Først skal du få listen over ejendoms-id'er, der har de faciliteter, du er interesseret i:
SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
Indsnæv derefter listen til kun at inkludere de ejendoms-id'er, der har mere end én faciliteter. Gruppering efter property_id samler resultaterne i unikke grupper baseret på hvilket property_id de tilhører. Derefter tæller vi simpelthen antallet af amenity_names i hver gruppe og kontrollerer, om det er 2 eller flere.
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
En antagelse i koden ovenfor er, at du ikke vil have det samme amenity_name tilknyttet et ejendoms-id mere end én gang. For at eliminere problemer relateret til det, skal du ændre HAVING
klausul for at inkludere DISTINCT
at luge ud i dubletterne, men tilføj det ikke, medmindre du har brug for det.
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2