как получить данные с SQL-сервера ToCityId и FromCityId Bases - PullRequest
0 голосов
/ 21 ноября 2018

У меня есть запрос ниже Я хочу показать данные fromCityId И ToCityId.Предположим, пассажиры путешествуют fromCity Лондон toCity Манчестер.Как мне написать запрос, подобный этому, когда я использую предложение where и in, оно показывает те же значения в fromcity и tocity

Ожидаемые результаты приведены ниже Рисунок

  Select vh.VoucharId,fCity.CityName as FromCity, tCity.CityName as ToCity, InDate 
    from VoucharHotel vh  
    inner join City fCity on   vh.City = fCity.CityId  inner join City tCity on
     vh.City = tCity.CityId 
     where vh.InDate  between '11/15/2018 12:00:00 AM' and '11/16/2018 12:00:00 AM'   AND City in (1,2)

enter image description here

CREATE TABLE VoucharHotel (
    ID int IDENTITY(1,1) PRIMARY KEY,
    VoucharId Int ,
    CityId int,
    HotelId  int,
    InDate Datetime,
    OutDate Datetime
);

CREATE TABLE City (
    CityId int IDENTITY(1,1) PRIMARY KEY,
    CityName varchar(200),
);
insert into City Values('London')
insert into City Values('Manchester')
insert into City Values('Birmingham')
insert into City Values('Leeds')

CREATE TABLE HotelMaster (
    HotelId int IDENTITY(1,1) PRIMARY KEY,
    HotelName varchar(200),
);
insert into HotelMaster Values('London Hotel')
insert into HotelMaster Values('Manchester Hotel')
insert into HotelMaster Values('Birmingham Hotel')
insert into HotelMaster Values('Leeds Hotel')

Insert into VoucharHotel Values(22,1,1,'11/15/2018', '11/16/2018')
Insert into VoucharHotel Values(22,2,2,'11/16/2018', '11/18/2018')
Insert into VoucharHotel Values(22,1,1,'11/18/2018', '11/20/2018')

Insert into VoucharHotel Values(23,2,2,'11/16/2018', '11/17/2018')
Insert into VoucharHotel Values(23,4,4,'11/17/2018', '11/20/2018')
Insert into VoucharHotel Values(23,2,2,'11/20/2018', '11/26/2018')

1 Ответ

0 голосов
/ 21 ноября 2018

Если ваша проблема решит следующее:

with cte
(VoucherID,FromCity,ToCity,InDate)
as
(
select
    vh.VoucharId
,   fCity.CityName as FromCity
,   tCity.CityName as ToCity
,   InDate
from        VoucharHotel    vh
inner join  City            fCity on    vh.City = fCity.CityId
inner join  City            tCity on    vh.City = tCity.CityId 
where       vh.InDate  between '11/15/2018 12:00:00 AM' and '11/16/2018 12:00:00 AM'
)

select
*
from    cte
where   City in (1,2)

Дайте мне знать, если вам нужны изменения.

...