2016-08-25 6 views
1

Good Day all,Oracle Select from multple Таблицы

Мне нужна помощь. У меня есть несколько таблиц в Oracle, у которых есть первичные ключи и внешние ключи, связывающие друг с другом. Таблицы:

Continent 
Sub-Continent 
Country 
Region 
City 
Location 

В качестве примера того, как макет для каждого:

continent_id  | continent_name 
1     | Africa 
2     | America 

sub_continent_id | sub_continent_name | continent_id 
A1    | Southern Africa  | 1 
B1    | Western Africa  | 1 
A2    | North America  | 2 
B2    | South America  | 2 

country_id  | country_name  | sub_continent_id 
CAN    | Canada    | A2 
ZA    | South Africa  | A1 

Это продолжается до конца: Region, City и Location. Как видно, идентификатор ссылается на другую таблицу. Таким образом:

country_name «Канада» ссылки sub_continent_id «A2», который является «Северным Америка». Ссылки «Северная Америка» continent_id 2 «Америк».

Что я хочу попробовать, так это запустить SQL-запрос, который, если бы я выбрал местоположение, должен вернуть остальные значения из других таблиц. Так что, если я выбираю место под названием «Строительство треугольника в», он автоматически вернется:

Triangle Building, New York City, New York, North America, Americas 

Я не уверен, что запрос для запуска, чтобы собрать все эти значения каждый раз.

Я могу запустить такой запрос, чтобы показать имя региона и название города, но не знаю, как выбрать больше значений из большего количества таблиц.

SELECT E.city_name NAME,D.region_name DNAME 
FROM CITY E JOIN REGION D 
ON (E.region_id = D.region_id); 

Благодарим за милю заранее и очень жаль, если это глупый вопрос.

+1

Просто начните с другой РЕГИСТРИРУЙТЕСЬ после предложения, вы должны иметь Е и D доступен, что другие присоединиться к ПО – fbiagi

ответ

0

Просто присоединиться все таблицы

SELECT E.city_name as NAME, D.region_name as DNAME, C.COUNTRY_NAME, SC.SUB_CONTINENT_NAME, 
     CO.CONTINENT_NAME 
FROM CITY E JOIN REGION  D ON E.region_id  = D.region_id 
      JOIN COUNTRY  C ON D.country_id  = C.country_id 
      JOIN SUB-CONTINENT SC ON C.sub_continent_id = SC.sub_continent_id 
      JOIN CONTINENT  CO ON SC.continent_id  = CO.continent_id; 
+1

Благодарит так много. Теперь я чувствую себя действительно глупо, не знал, что все так просто. –

+1

@ user2082599 - не чувствуйте себя глупо. Совершенно законный вопрос и то, как вы описали проблему, как таблицы связаны друг с другом, используя первичный и внешний ключи точно в правильном направлении и т. Д., Указывает на противоположность глупости. – mathguy

+1

@ user2082599 Mathguy прав, вопрос был совершенно задан. Путь выше среднего. – vercelli

Смежные вопросы