-1

我正在开发酒店管理软件,我需要显示楼层和该楼层的房间......

我在数据库中有一个wing_master 表,其中包含以下列-:wing_id、wing_name、floor、floor_room_count、status

就像我在那个有 4 层楼的酒店里有一个翼楼的记录,但是当我写一个查询来获取那个翼楼的楼层时,它只会给我“4”作为 sql 的结果.....

我希望查询返回如下 - :

1
2
3
4

我想要这种方式,以便我可以在 asp.net 中使用嵌套数据列表控件......

我的查询是“ select floors from wing_master where wing_id = 1

4

2 回答 2

2

对于大多数数据库(不是 MySQL),您可以使用递归查询来获取所有楼层:

with all_floors as (
   select floors from wing_master where wing_id = 1
      union all
   select floors - 1 as floors from all_floors 
      where floors > 1
)
select * from all_floors order by floors;

SQLFiddle 示例。

在 MySQL 中,最简单的方法是创建一个数字表,其中包含一系列数字,直到可能的最高层。然后加入该表以获取所有楼层:

select num from wing_master
   join numbers on 
       wing_id = 1 and 
       num <= floors;

SqlFiddle 示例。

于 2013-06-07T05:52:32.540 回答
0

您的查询没问题,而且查询和表结构似乎也可以满足您的要求。你能显示你的数据吗,因为根据结构,表格中应该有四行,显示楼层 1, 2, 3, 4

像这样的东西

floor    wing_id
  1         1
  2         1
  3         1
  4         1

如果这就是您的数据的外观,那么您的查询一定没问题,否则还有其他问题。所以一定要用几行数据来分享你的结构。

于 2013-06-07T06:00:50.367 回答