【问题标题】:mysql selecting room types issuemysql选择房间类型问题
【发布时间】:2015-04-04 00:41:37
【问题描述】:

我有如下两张表,每个酒店会有房间类型,每个房间类型会有房间..所以在每家酒店下,我想显示分配给他们的房间类型以及分配给该房间类型的所有房间

房型表

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]

谢谢!

【问题讨论】:

  • 您的示例结果不准确...?酒店 ID 有房间 1,3,4 而不是 1,2
  • 为什么两个表都有hotel_id?
  • 酒店有房间,房型...
  • 我认为你应该检查组连接
  • @Salketer:他的例子是正确的。 1,2是各个房型下的房间总数。

标签: php mysql sql mysqli phpmyadmin


【解决方案1】:

抱歉,我手头没有 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"

【讨论】:

  • 无法打开链接,我认为没有理由打开它。你要我写完整的php代码吗?用 html 和 css ??你对 php+PDO 没有经验吗?您在开发的哪一部分需要帮助?
  • 我尝试了您的 sql,但它没有输出我想要的内容...我只想显示每个酒店的房间类型以及分配给每个房间类型的房间..请帮助我..谢谢
  • 您使用我的查询得到了什么??
  • 它只是重复了3次..那个酒店只有一个房间类型和两个房间类型..所以它应该只输出一次房间类型
  • 根据提供的数据,您在酒店 33 中有 3 间客房,有两种房间类型 1 的 room_type_id=1 和 2 的 room_type_id=3。这就是为什么查询返回 3 行,所以您只需要 2 行和房间柜台?如果酒店里有 5 间相同类型的房间,那只能返回一排?
【解决方案2】:

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

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 . "'

【讨论】:

  • 这没有显示我想要的......就像假设我只有一种房间类型,而那个房间类型有两个房间......所以我只想显示房间类型但在里面该房间应显示分配给该房间的房间..谢谢
  • 检查 agoda.com..我想要类似的东西
【解决方案3】:

Select rty.name, rta.room_id from rooms rta, roomsType rty where rta.ROOM_TYPE_ID=rty.ID and rta.ROOM_ID=33

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-22
    • 2013-01-17
    • 1970-01-01
    • 2015-02-03
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多