mysql查询相关表的条件

时间:2013-09-05 11:58:13

标签: mysql relational-database

我有一个带有房子id的桌子'house',带有房间id的桌子'room',以及这两个桌子的关系表

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

我在编写一个查询时遇到问题,该查询通过某些组合条件返回一个house id的数组:

例如:所有房屋的厨房大小在350到450之间,浴室大小在450到550之间 - > result应该是一个包含house2的数组

谁知道我应该怎么写这个查询?

1 个答案:

答案 0 :(得分: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