mysql 选择房型问题
mysql selecting room types issue
我有如下两个表格,每个酒店会有房型,每个房型会有房间..所以在每个酒店下面我想显示分配给他们的房间类型以及分配给该房间类型的所有房间.
房型Table
ID || NAME || hotel_id ||
1 || a || 33 ||
2 || b || 55 ||
3 || c || 33 ||
房间数Table
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]
谢谢!
您加入了错误的栏目,尝试:
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 . "'
Select rty.name, rta.room_id 来自房间 rta, roomType rty 其中 rta.ROOM_TYPE_ID=rty.ID 和 rta.ROOM_ID=33
我认为使用列表对您来说更好。
然后,根据需要格式化结果集。
抱歉,我手头没有 sql 服务器,所以您可能需要稍微调试一下:
"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"
我有如下两个表格,每个酒店会有房型,每个房型会有房间..所以在每个酒店下面我想显示分配给他们的房间类型以及分配给该房间类型的所有房间.
房型Table
ID || NAME || hotel_id ||
1 || a || 33 ||
2 || b || 55 ||
3 || c || 33 ||
房间数Table
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]
谢谢!
您加入了错误的栏目,尝试:
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 . "'
Select rty.name, rta.room_id 来自房间 rta, roomType rty 其中 rta.ROOM_TYPE_ID=rty.ID 和 rta.ROOM_ID=33
我认为使用列表对您来说更好。 然后,根据需要格式化结果集。
抱歉,我手头没有 sql 服务器,所以您可能需要稍微调试一下:
"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"