0

ハウスIDを持つテーブル「ハウス」、ルームIDを持つテーブル「ルーム」、およびこれら2つのテーブルの関係テーブルがあります

HOUSE
-----
1 |   house1
2 |   house2
3 |   house3
4 |   house4
5 |   house5

ROOM
------
1 |   kitchen
2 |   bathroom
3 |   garage

HOUSE_ROOMS
------------
id | house_id | room_id  |  size 
=================================

1 | 1 | 1 | 200
2 | 1 | 2 | 300
3 | 2 | 1 | 400
4 | 2 | 2 | 500
5 | 3 | 1 | 500
6 | 4 | 2 | 600
7 | 5 | 1 | 400
8 | 5 | 5 | 300

いくつかの条件を組み合わせてハウス ID の配列を返すクエリを書くのに問題があります。

例: キッチンのサイズが 350 から 450 で、バスルームのサイズが 450 から 550 のすべての家を取得します -> 結果は house2 を含む配列になります。

このクエリの書き方を知っている人はいますか?

4

1 に答える 1

1

すべての ID が固定されていると仮定すると、次の簡単なクエリが機能します。

 SELECT HOUSE_ID
   FROM HOUSE_ROOMS
  WHERE (ROOM_ID=2 AND SIZE>=450 AND SIZE<=550)
     OR (ROOM_ID=1 AND SIZE>=350 AND SIZE<=450)
  GROUP BY HOUSE_ID
 HAVING COUNT(DISTINCT ROOM_ID)>1
于 2013-09-05T12:04:02.777 に答える