Как сделать внутреннее соединение два раза с одной таблицей в sql server

#sql-server

#sql-сервер

Вопрос:

У меня есть две таблицы в sql server как

 City_Master(
ID bigint,
Name  nvarchar(50)
)
Tour_Details(
ID bigint,
From_City bigint,
To_City bigint,
Details nvarchar(max),
Cost nvarchar(100),
Tour_Name nvarchar(100),
Duration nvarchar(max))
 

столбцы в таблице Tour_Details From_City и To_City поступают из таблицы City_Master. Я хочу выбрать названия городов идентификатора, который находится в столбцах From_City и To_City таблицы Tour_Details.

Для этого я использовал следующий sql-запрос

 SELECT Tour_Details.ID, Tour_Details.Tour_Name, Tour_Details.From_City, Tour_Details.To_City, Tour_Details.Cost, 
   Tour_Details.Details,Tour_Details.Duration, City_Master.Name as City FROM Tour_Details INNER JOIN
   City_Master ON Tour_Details.From_City = City_Master.ID ORDER BY Tour_Details.ID DESC
 

Но он возвращает только одно название города, но в столбцах таблицы tour_Details присутствуют два идентификатора города, например, From_City, To_City. Я хочу назвать оба города.Пожалуйста, кто-нибудь может мне помочь

Ответ №1:

попробуй это

 SELECT Tour_Details.ID, Tour_Details.Tour_Name, Tour_Details.From_City, Tour_Details.To_City, Tour_Details.Cost, 
Tour_Details.Details,Tour_Details.Duration, B.Name as FromCityName, A.Name as ToCityName 
FROM Tour_Details 
INNER JOIN City_Master B ON B.ID  = Tour_Details.From_City
INNER JOIN City_Master A ON A.ID = Tour_Details.To_City 
ORDER BY Tour_Details.ID DESC
 

Комментарии:

1. Сэр, этот запрос немного ошибочен при внутреннем соединении, потому что From_City и To_City являются столбцами таблицы Tour_Details, а не City_Master, как вы показали в приведенном выше запросе.

2. Тем не менее, это неверно. Я делаю это правильно самостоятельно, как показано ниже: ВЫБЕРИТЕ Tour_Details . ИДЕНТИФИКАТОР, Tour_Details. Имя_тур, имя_тур_детали. From_City, Tour_Details . To_City, Tour_Details. Стоимость, Tour_Details. Подробности, Tour_Details. Продолжительность, B.Name как FromCityName, A.Name как ToCityName ИЗ Tour_Details ВНУТРЕННЕЕ СОЕДИНЕНИЕ City_Master B ВКЛ B.ID = Детали тура. From_City ВНУТРЕННЕЕ СОЕДИНЕНИЕ City_Master A ВКЛ A.ID = Детали тура. To_City УПОРЯДОЧИТЬ ПО Tour_Details. ИДЕНТИФИКАТОР DESC

3. спасибо за ваше руководство.