пытаюсь найти имя на основе внешних ключей - PullRequest
0 голосов
/ 06 мая 2020

проблемы в приведенной ниже ситуации

У меня есть две таблицы города и city_distance

Структура таблицы городов: - pkCityID CityName пример значений {(1, a) , (2, b), (3, c), (4, d)}

структура city_distance: - fkCityID fkCitiesID CityDistance значения {(1 , 2, 3.3), (1, 3, 4.1), (1, 4, 6.1)} et c

Примечание. - И fkCityID, и fkCitiesID являются внешними ключами pkCityID

Что мне нужно: - b c d

Теперь я хочу найти все CityName из fkCitiesID на основе CityName. Означает, что я знаю CityName.

Что я делаю: -

  1. Найдите pkCityID на основе CityName
  2. Найдите все CityNames с помощью соединения.

Здесь ID города равен 1, затем запросите: -

SELECT CityName, d.fkCityID, d.fkCitiesID 
FROM city_distance as d inner
join cities as c on d.fkCitiesID = c.pkCityID WHERE fkCityID = 1

Как я могу сделать это в одном запросе?

1 Ответ

1 голос
/ 06 мая 2020

Вам нужно присоединиться из городов к city_distance, а затем назад к городам:

Select cities_b.CityName
  From cities cities_a
  Join city_distance cd On cities_a.pkCityID = cd.fkCityID
  Join cities cities_b On cd.fkCitiesID = cities_b.pkCityID
 Where cities_a.CityName = 'a';

Это должно вернуть b, c, d

(вы говорите, что хотите a, b, c в вашем вопросе, но я предполагаю, что это опечатка, так как я не вижу в ней никакой закономерности)

Демо: http://sqlfiddle.com/#! 9 / c89912 / 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...