これを試してみてください:
SELECT property_id FROM amenities
WHERE amenity_name IN ('parking', 'elevator')
GROUP BY property_id
HAVING COUNT(amenity_name) >= 2
はここで何が起こっているのです...
まず、あなたが興味を持っているの設備を持っているプロパティIDの一覧を取得:
をSELECT property_id FROM amenities WHERE amenity_name IN ('parking', 'elevator')
次に、プロパティIDのwhだけを含むようにリストを絞り込みますichは複数のアメニティを持っています。 property_idを使用してグループ化すると、結果が属しているproperty_idに基づいて結果が一意のグループにまとめられます。次に、各グループのアメニティ名の数を数え、それが2以上であるかどうかを確認するだけです。上記のコードで
GROUP BY property_id HAVING COUNT(amenity_name) >= 2
一つの仮定を使用すると、複数回PROPERTY_IDに関連付けられている同じamenity_nameを持っていないということです。それに関連する問題を解消するには、DISTINCT
を含めるようにHAVING
句を変更して、重複を除外しますが、必要がない限り追加しないでください。
GROUP BY property_id HAVING COUNT(DISTINCT(amenity_name)) >= 2
名= '駐車場' と名前が= 'エレベーター' 設備から選択PROPERTY_ID。 nameは両方の値を同時に持つことができないので何も返しません。テーブル構造の詳細と達成したいことを少し詳しく説明できますか? –
また、誰かがあなたに答え続けることを願っている場合は、何らかの答えを受け入れることを検討してください。 ;) –
あなたが役に立つ答えを見つけたら、それを受け入れて、人々が将来あなたの質問を読むようにします。 –