SQL查询结果的显示问题

有表RoomInformation内容:FloorNO,RoomNO,BadNO1,101,41,102,41,103,4有表HotelStaff内容:IDRoomNON... 有表RoomInformation
内容:
FloorNO,RoomNO,BadNO
1,101,4
1,102,4
1,103,4
有表HotelStaff
内容:
ID RoomNO Name Grade Class
1 101 A1 2 1
2 101 B1 2 2
3 101 C1 1 1
4 101 D1 1 2
5 102 A2 2 1
6 102 B2 2 2
7 102 C2 1 1
8 102 D2 1 2
9 103 A3 2 1
10 103 B3 1 2
11 103 C3 2 2
12 103 D3 1 1

需要实现查询结果如下:
FloorNO RoomNO BadNO ID RoomNO Name Grade Class
1 101 4 1 101 A1 2 1
2 101 B1 2 2
3 101 C1 1 1
4 101 D1 1 2
1 102 4 5 102 A2 2 1
6 102 B2 2 2
7 102 C2 1 1
8 102 D2 1 2
1 103 4 9 103 A3 2 1
10 103 B3 1 2
11 103 C3 2 2
12 103 D3 1 1

使用
select * from RoomInformation
left join HotelStaff on RoomInformation.RoomNO=HotelStaff.RoomNO
查询实现不了,可以用什么方式来实现呢?
表1

表2

查询结果

我需要的是查询结果中,表RoomInformation里的每行资料只显示一次就够了,然后对应表HotelStaff 里有四行记录,连续显示出来,然后是表RoomInformation的第二行,以此类推
展开
 我来答
badkano
2018-09-28 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885371
团长

向TA提问 私信TA
展开全部

创建表、数据:

create table RoomInformation
(FloorNO int,
RoomNO int,
BadNO int);

create table HotelStaff
(ID int,
RoomNO int,
Name varchar(2),
Grade int,
Class int);

insert into RoomInformation values (1,101,4);
insert into RoomInformation values (1,102,4);
insert into RoomInformation values (1,103,4);

insert into HotelStaff values (1,101,'A1',2,1);
insert into HotelStaff values (2,101,'B1',2,2);
insert into HotelStaff values (3,101,'C1',1,1);
insert into HotelStaff values (4,101,'D1',1,2);
insert into HotelStaff values (5,102,'A2',2,1);
insert into HotelStaff values (6,102,'B2',2,2);
insert into HotelStaff values (7,102,'C2',1,1);
insert into HotelStaff values (8,102,'D2',1,2);
insert into HotelStaff values (9,103,'A3',2,1);
insert into HotelStaff values (10,103,'B3',1,2);
insert into HotelStaff values (11,103,'C3',2,2);
insert into HotelStaff values (12,103,'D3',1,1);

执行:

select b.id,a.RoomNO,b.Name,b.grade,b.class from RoomInformation a,HotelStaff b where a.RoomNO=b.RoomNO

结果:

追问
我需要的是查询结果中,表RoomInformation里的每行资料只显示一次就够了,然后对应表HotelStaff 里有四行记录,连续显示出来,然后是表RoomInformation的第二行,以此类推
追答
select case when b.id%4=1 then a.FloorNO else null end FloorNO,
case when b.id%4=1 then a.RoomNO else null end RoomNO,
case when b.id%4=1 then a.BadNO else null end BadNO,
b.id,b.RoomNO,b.Name,b.grade,b.class from RoomInformation a,HotelStaff b where a.RoomNO=b.RoomNO

这样:

腾讯电脑管家
2018-11-04 · 百度知道官方认证企业
腾讯电脑管家
腾讯电脑管家是腾讯公司推出的免费安全管理软件,能有效预防和解决计算机上常见的安全风险,并帮助用户解决各种电脑“疑难杂症”、优化系统和网络环境,是中国综合能力最强、最稳定的安全软件。
向TA提问
展开全部
Check if this entry is a directory or a file.
const size_t filenameLength = strlen(fileName);
if (fileName[filenameLength-1] == '/')
{
{
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式