mysql选择房间类型问题

时间:2015-02-04 13:10:45

标签: php mysql sql mysqli phpmyadmin

我有以下两个表格,对于每个酒店会有房间类型,而每个房间类型都会有房间 ..因此,在每个酒店下,我想显示分配给他们的房间类型以及分配给该房间类型的所有房间

房间类型表

ID  || NAME || hotel_id ||
1   || a    ||    33    ||
2   || b    ||    55    ||
3   || c    ||    33    ||

会议室表

ROOM_ID || ROOM_TYPE_ID  || hotel_id || checkin      || checkout     ||
1       ||   1           ||    33    || 2015-02-04   || 2015-02-08   ||
2       ||   2           ||    55    || 2015-02-24   || 2015-02-28   ||
3       ||   3           ||    33    || 2015-04-14   || 2015-03-18   ||
4       ||   3           ||    33    || 2015-04-18   || 2015-03-28   ||

结果应该是这样的

Hotel id = 33

room types = a,c
rooms      = 1,2

我尝试了以下加入它的工作但不是我想要的

SELECT r.* FROM rooms r JOIN room_types rt ON rt.room_type_id = r.room_id WHERE r.hotel_id  = '" . (int)$hotel_id . "'

*结果应该是**

[http://i.stack.imgur.com/xKXcp.png][1]

谢谢!

3 个答案:

答案 0 :(得分:0)

您正在加入错误的列,请尝试:

SELECT r.*,rt.* FROM rooms r JOIN room_types rt ON rt.ID = r.ROOM_TYPE_ID AND r.hotel_id = rt.hotel_id WHERE r.hotel_id  = '" . (int)$hotel_id . "'

答案 1 :(得分:0)

从房间rta,roomsType rty中选择rty.name,rta.room_id,其中rta.ROOM_TYPE_ID = rty.ID和rta.ROOM_ID = 33

我认为,对你来说更好,使用列表。 然后,根据需要格式化结果集。

答案 2 :(得分:0)

抱歉,我手上没有sql server,所以你可能需要稍微调试一下:

"SELECT COUNT(r.room_id) as rooms , rt.*
FROM rooms r 
INNER JOIN (
  SELECT * 
  FROM room_types 
  WHERE hotel_id  = 33
    AND name in ('a','c') ) 
AS rt 
ON rt.id = r.room_type_id 
WHERE r.room_id in ( 1, 2 )
GROUP BY rt.id"