首页 新闻 搜索 专区 学院

求助,这段代码怎么改?

0
[已解决问题] 解决于 2018-05-27 14:05

我想查询出来CabinTypes.ID等于1、2、3时的值,但是连接查询貌似写的不太对,单独查一个是没问题的,三个一起就是不对的了,有点不知道怎么改,求指点。


select Amen1.Service as Economy,Amen2.Service as Business,Amen3.Service as FirstClass From Tickets inner join CabinTypes on Tickets.CabinTypeID =CabinTypes.ID inner join AmenitiesCabinType on CabinTypes.ID =AmenitiesCabinType.CabinTypeID inner join Amenities as Amen1 on AmenitiesCabinType.AmenityID=Amen1.ID and CabinTypes.ID=1 inner join Amenities as Amen2 on AmenitiesCabinType.AmenityID=Amen2.ID and CabinTypes.ID=2 inner join Amenities as Amen3 on AmenitiesCabinType.AmenityID=Amen3.ID and CabinTypes.ID=3

 

问题补充:

关系图如下

SeeSharper的主页 SeeSharper | 初学一级 | 园豆:15
提问于:2018-05-26 21:14

你要说出需求啊,都不知道你想干嘛

求知若饥,虚心若愚 3年前
< >
分享
最佳答案
0

这么写是为了什么?

奖励园豆:5
最佳解决方案 | 初学一级 |园豆:25 | 2018-05-26 21:23

我想获取在CabinTypes.ID 的值为1.2.3的时候Amenities表的Service字段,我把那个关系图贴上来吧

SeeSharper | 园豆:15 (初学一级) | 2018-05-26 21:29

@柳芽: 

select a.Service From Amenities a inner join AmenitiesCabinType b on
b.AmenitiesID=a.ID where b.CabinTypeID in (1,2,3)

查那个表的字段那个表就作为主表

最佳解决方案 | 园豆:25 (初学一级) | 2018-05-26 21:44

如果我想得到的数据是三个啊,比如对应id为1时我查到的数据为普通,2中等,3高级分别查出来,这段代码查的是混合在一起的<br/>来自 Cnblogs For Xamarin

SeeSharper | 园豆:15 (初学一级) | 2018-05-26 23:23

@柳芽: 

select case b.CabinTypeID when 1 then a.Service end a,case b.CabinTypeID when 2 then a.Service end b,case b.CabinTypeID when 3 then a.Service end c From Amenities a inner join AmenitiesCabinType b on
b.AmenitiesID=a.ID where b.CabinTypeID in (1,2,3)

是你想要的效果吗

最佳解决方案 | 园豆:25 (初学一级) | 2018-05-26 23:53

@求知若饥,虚心若愚: 我的需求是查询一定时间内预定飞机便利服务(Amenities.Service)的总个数,j机舱类型(CabinType)普通舱,商务舱,头等舱预定的服务分开显示。于是我想的是,我一次查出来某个日期的 三种仓的 各自的服务名称,统计个数自己额外做,我用你的代码测试了,查出来的虽然是三种,但是明显查到的服务数量不太对,我道行太浅也找不出哪里不对劲😄

SeeSharper | 园豆:15 (初学一级) | 2018-05-27 09:12

@柳芽: 那你加时间条件了吗?

最佳解决方案 | 园豆:25 (初学一级) | 2018-05-27 13:25

@求知若饥,虚心若愚: 算了,我把问题丢给老师解决吧,不过还是谢谢你

SeeSharper | 园豆:15 (初学一级) | 2018-05-27 14:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册