我有三张桌子
CREATE TABLE IF NOT EXISTS `tbl_hotelinfo` (
`hotel_id` int(11) NOT NULL AUTO_INCREMENT,
`hotel_name` varchar(20) NOT NULL,
`hotel_normal_room` int(3) NOT NULL,
`hotel_delux_room` int(3) NOT NULL,
`hotel_nonac_room` int(3) NOT NULL,
`hotel_ac_room` int(3) NOT NULL,
`hotel_owner_email` varchar(20) NOT NULL,
`hotel_owner_index` int(11) NOT NULL,
`hotel_state` varchar(11) NOT NULL,
`hotel_district` varchar(11) NOT NULL,
`hotel_phno` int(13) NOT NULL,
`hotel_location` varchar(20) NOT NULL,
PRIMARY KEY (`hotel_id`)
)
CREATE TABLE IF NOT EXISTS `tbl_hotelbooking` (
`hotel_id` int(11) NOT NULL,
`normal_room_booked` int(3) NOT NULL DEFAULT '0',
`delux_room_booked` int(3) NOT NULL DEFAULT '0',
`nonac_room_booked` int(3) NOT NULL DEFAULT '0',
`ac_room_booked` int(3) NOT NULL DEFAULT '0'
)
CREATE TABLE IF NOT EXISTS `tbl_room_types` (
`hotel_id` int(11) NOT NULL,
`hotel_normal_room` enum('yes','no') NOT NULL DEFAULT 'no',
`hotel_delux_room` enum('yes','no') NOT NULL DEFAULT 'no',
`hotel_nonac_room` enum('yes','no') NOT NULL DEFAULT 'no',
`hotel_ac_room` enum('yes','no') NOT NULL DEFAULT 'no',
`normal_fair` int(11) NOT NULL,
`delux_fair` int(11) NOT NULL,
`non_ac_fair` int(11) NOT NULL,
`ac_fair` int(11) NOT NULL
)
现在我需要加入这三个表来查找hotel_name,hotel_location为那些房间可用的酒店 假设我们有hotel_id可用。首先我必须找到针对每个room_type的特定hotel_id可用的hotel_room_types(枚举类型是假设只有正常房间枚举类型为是)检查是否tbl_hotelinfo.hotel_normal_room> tbl_hotelbooking.normal_room_booked 我试过了
$q="SELECT total.hotel_name ,total.hotel_phno
FROM tbl_hotelbooking AS book ,
tbl_hotelinfo AS total,
tbl_room_types AS rtype
WHERE
SELECT * from tbl_room_types
rtype.hotel_id='$hotel_id'
";
答案 0 :(得分:1)
这个问题没有答案(你现在还没有问过实际问题),只是一个建议。
在表格“tbl_room_types”中,您可以使用数据类型为room_type
的单列tinyint
,而不是为每种房型设置不同的列。
否则,如果将来添加一些新的房间类型,您将不得不添加不同的列。
或者您可以将枚举定义为enum('d','n','ac', 'nac')
d代表豪华,n代表正常,依此类推......
答案 1 :(得分:0)
select h.hotel_name,
h.hotel_location,
from tbl_hotel_info h
join tbl_hotelbooking b on h.hotel_id = b.hotel_id
where h.hotel_normal_room < b.normal_room_booked
or h.delux_room < b.delux_room_booked
or h.ac_room < b.ac_room_booked
or h.nonac_room < b.nonac_room_booked;
顺便说一下,这是一个非常可怕的设计!我可以在没有AC的情况下拥有带AC或豪华房间的普通房间吗? room_types中的枚举似乎没有用处。
答案 2 :(得分:0)
检查......并练习;)