Versuchen Sie Folgendes:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
Folgendes ist los...
Rufen Sie zuerst die Liste der Unterkunfts-IDs ab, die über die Annehmlichkeiten verfügen, an denen Sie interessiert sind:
SELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
Grenzen Sie dann die Liste so ein, dass sie nur die Eigentums-IDs enthält, die mehr als eine Annehmlichkeit haben. Die Gruppierung nach Eigenschafts-ID bündelt die Ergebnisse in eindeutige Gruppen, basierend auf der Eigenschafts-ID, zu der sie gehören. Dann zählen wir einfach die Anzahl der amenity_names in jeder Gruppe und prüfen, ob es 2 oder mehr ist.
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
Eine Annahme im obigen Code ist, dass derselbe amenity_name nicht mehr als einmal mit einer property_id verknüpft ist. Um damit zusammenhängende Probleme zu beseitigen, ändern Sie den HAVING
-Klausel, um DISTINCT
einzuschließen um die Duplikate auszusortieren, aber fügen Sie es nur hinzu, wenn Sie es brauchen.
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2