2016-08-25 28 views
1

おはようございます、Oracle複数のテーブルから選択

私はいくつかの助けを求めています。 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 

これは残りの継続:RegionCityLocation。 見ることができるように、IDは別のテーブルを参照しています。したがって:

country_name「カナダ」は、「北朝鮮 アメリカ」であるsub_continent_id「A2」を参照しています。 「北アメリカ」は、「アメリカ」であるcontinent_id 2を参照しています。

私が試してやりたいことは、場所を選んだ場合、他のテーブルから残りの値を返さなければならないSQLクエリを実行することです。私は「Triangeビル」と呼ばれる場所を選択するのであれば、それは自動的に戻ります。

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

私は毎回、これらすべての値を収集するために実行するクエリ何の確信がもてません。

このように1つのクエリを実行して地域名と都市名を表示できますが、他のテーブルからさらに値を選択する方法はわかりません。

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

あらかじめ1マイルありがとうございました。これは愚かな質問であれば大変申し訳ありません。

+1

はちょうど別で始まるすべてのテーブルにはON句の後に、あなたが他のために利用可能なEおよび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

おかげでJOIN、JOIN参加します。私は今、本当に愚かな気がするが、それは簡単ではなかった。 –

+1

@ user2082599 - 馬鹿だとは思わない。完全に合法的な質問、そしてあなたが問題を説明した方法、テーブルがお互いにどのように関係しているか、プライマリと外部キーを正確に使用するなどは、愚かなことの反対を示しま​​す。 – mathguy

+1

@ user2082599マスグイは正しく、質問は完全に尋ねられました。平均より上の方法。 – vercelli

関連する問題