我有以下两个表格,对于每个酒店会有房间类型,而每个房间类型都会有房间 ..因此,在每个酒店下,我想显示分配给他们的房间类型以及分配给该房间类型的所有房间。
房间类型表
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]
谢谢!
答案 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"