SQL: создание представления для 2 таблиц и 1 справочной таблицы - PullRequest
0 голосов
/ 02 мая 2018

Я получил вопрос SQL новичка, на который я не могу найти ответ. Пожалуйста, позвольте мне объяснить с выдуманным (но актуальным) сценарием:

Допустим, у меня есть две таблицы: TBL_HOME и TBL_WORK. Обе таблицы имеют набор столбцов, которые в основном связаны с адресом соответствующего места. У меня также есть одна справочная таблица с именем REF_CITY, которая просто имеет два столбца, CITY_ID и CITY_NAME. Мне нужен вид, который имеет (среди прочих) CITY_NAME обоих местоположений.

Я знаю, как получить CITY_NAME для одной из 2 таблиц:

// e.g., Get city name for HOME
SELECT c.CITY_NAME AS HOME_CITY
FROM TBL_HOME h
LEFT JOIN REF_CITY c ON h.CITY_ID = c.CITY_ID

Но я в недоумении, как CITY_NAME для обоих мест можно добавить в один и тот же вид, поскольку ссылка на c.CITY_NAME уже сделана для одного местоположения.

1 Ответ

0 голосов
/ 02 мая 2018

Вы можете выполнить это, соединив две таблицы вместе, а затем дважды присоединившись к справочной таблице. Используя ваш TBL_HOME и TBL_WORK пример:

SELECT CityHOME.CITY_NAME as HomeCity, CityWork.CITY_NAME as WorkCity
FROM TBL_HOME HOME
LEFT JOIN TBL_WORK WORK on HOME.PrimaryKey = WORK.ForeignKey
LEFT JOIN REF_CITY CityHOME on CityHOME.CITY_ID = HOME.CITY_ID
LEFT JOIN REF_CITY CityWork on CityWork.CITY_ID = WORK.CITY_ID
...