jame01 Ответов: 1

Как получить отношение соединения два раза в одних и тех же строках с разным значением


привет, ребята...

не могли бы вы, ребята, помочь мне с этой проблемой ?
проблема
у меня есть две таблицы, которые связаны друг с другом дважды
так они могут прийти два раза в одни и те же ряды например
соответствующее значение может быть в первых строках 1 и во вторых строках 2
но когда я присоединяюсь к ним, оба они имеют одинаковое значение (1)
и это неправильно ,,
извините, если я не смог хорошо объяснить :(
я создал этот пример, который показывает именно мои проблемы.

 tblcity
+---------+------------+
| ID      | NAME       | 
+---------+------------+
|1        | paris      |
|2        | munchen    |
|3        | Berlin     |
+---------+------------+
tblmv
--this table is realted with tblcity twice once with from_city second to_city   
+---------+------------+-----------+--------+--------+
| ID      | NAME       |from_city  |to_city |status  |
+---------+------------+-----------+--------+--------+
| 1       | JAmes      | 1         |  2     |arrive  |
| 2       | Alex       | 2         |  3     |depart  |
+---------+------------+-----------+--------+--------+
view table be like 
+---------+------------+-----------+--------+-------+
| ID      | NAME       |from_city  |to_city |status |
+---------+------------+-----------+--------+-------+
| 1       | JAmes      | paris     |munchen |arrive |
| 2       | Alex       | munchen   |Berlin  |depart |
+---------+------------+-----------+--------+-------+

любая помощь будет очень признательна

Что я уже пробовал:

я пробовал все присоединяется как внутреннее соединение, левое соединение справа присоединяется

1 Ответов

Рейтинг:
10

RossMW

Чтобы получить нужные вам результаты, вам нужно дважды присоединиться к таблице tblCity. Один раз для значения From_City и еще раз для значения To_City.

То, что вы в конечном итоге получаете, это что-то вроде

SELECT        dbo.tblmv.ID, dbo.tblmv.Name, dbo.tblmv.Status, tblCity_1.name AS from_City, dbo.tblCity.name AS To_City
FROM            dbo.tblCity INNER JOIN
                         dbo.tblmv ON dbo.tblCity.ID = dbo.tblmv.From_City INNER JOIN
                         dbo.tblCity AS tblCity_1 ON dbo.tblmv.To_City = tblCity_1.ID

что дает вам результаты


ID имя статус от_сити До_сити
1 Джеймс прибывает в Мюнхен Париж
2 Алекс Вылет Из Берлина Мюнхен