2017-03-02 8 views
0

は、私は2つのテーブルがあります。外部キーが別のテーブルで使用された回数をカウントするクエリを作成するにはどうすればよいですか?

CREATE TABLE "OEHR_COUNTRIES" (
    "COUNTRY_ID" CHAR(2)  CONSTRAINT "OEHR_COUNTRY_ID_NN" NOT NULL ENABLE, 
    "COUNTRY_NAME" VARCHAR2(40), 
    "REGION_ID"  NUMBER, 
    CONSTRAINT "OEHR_COUNTRY_C_ID_PK" PRIMARY KEY ("COUNTRY_ID") ENABLE 
    )/ 

CREATE TABLE "OEHR_LOCATIONS" (
    "LOCATION_ID"  NUMBER(4,0), 
    "STREET_ADDRESS" VARCHAR2(40), 
    "POSTAL_CODE"  VARCHAR2(12), 
    "CITY"    VARCHAR2(30) CONSTRAINT "OEHR_LOC_CITY_NN" NOT NULL ENABLE, 
    "STATE_PROVINCE" VARCHAR2(25), 
    "COUNTRY_ID"  CHAR(2), 
    CONSTRAINT "OEHR_LOC_ID_PK" PRIMARY KEY ("LOCATION_ID") ENABLE 
    ) 
/

をし、私はディスプレイが、それぞれが持っている場所の数と一緒に、すべての国の名前とidのクエリを作成する必要があります。

+1

OK、あなたは何をしようとしましたか? – OldProgrammer

+1

@ EJG101 - 何の理由もなく投稿を誹謗中傷しないでください。 – GurV

答えて

0

それは簡単left joinと集計です:

select c.country_id, 
    c.country_name, 
    count(*) num_of_locations 
from oehr_countries c 
left join oehr_locations l on c.country_id = l.country_id 
group by c.country_id, 
    c.country_name 
0
select country_name, count(*) 
from oehr_countries m, oehr_locations d 
where m.country_id = d.country_id 
+0

これは場所のない国を省略します。外部結合を使用する方が安全です。また、古いスタイルの結合構文(明示的なJOINではなくFROM句の複数の表)は、もはや使用しないでください。 –

+0

申し訳ありません、ここは新しいです。誰もが、ANSI結合構文が唯一の方法だと言っていますが、なぜ誰もその理由を言いません。私はおそらく、エリソン氏や下級者から聞くまで待つつもりです。しかし、説得力のあるリファレンスを挙げることができれば、私はそれを読むことを試みるかもしれません。 –

+0

私は、場所のない国を省略すると違いが生じるとは確信していません。目的が外部キーをカウントすることである場合、関連情報を含まない行をバイパスしています。 –

関連する問題