• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:副問合せ)

人口密度100以下の国で発明事項のある国の国コードを表示する方法

このQ&Aのポイント
  • 副問合せを使用して、人口密度が100以下の国で発明事項のある国の国コードを表示する方法について質問しています。
  • 質問文には2つの方法が示されており、方法1ではNATION表を主問合せで使用し、方法2ではINVENTION表を主問合せで使用しています。
  • 方法1では結果が80件返ってしまい、正しい結果が表示されていないため、何が問題か質問しています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

方法はいくつもあると思いますが.. select CODE from NATION where (POPULATION / AREA) <= 100 and exists(select 1 from INVENTION where NATION_CODE=CODE) とか select CODE from NATION,INVENTION where (POPULATION / AREA) <= 100 and NATION_CODE=CODE が妥当なんじゃないでしょうか。

yukikundesuyo
質問者

お礼

「副問合せ 続(Oracle SQL)」 で的確な結果の出力が返ってきたので、とりあえずOKです。 本当にありがとうございました。

その他の回答 (1)

回答No.1

各表の説明がないので、正しいSQLは、どのように書けばよいのか 判りませんが・・ 少なくとも、方法1のSQLは、副問い合わせが、定数100を返すので、 副問い合わせの意味は全くなく、次の単一表による検索と同じ意味です。 SELECT CODE FROM NATION WHERE POPULATION / AREA < 100;

yukikundesuyo
質問者

補足

申し訳ございません。 各表の構造はこのようになります。 SQL> DESCRIBE INVENTION 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- INVENTION NOT NULL VARCHAR2(30) INVENTOR VARCHAR2(30) YEAR NUMBER(4) NATION_CODE NUMBER(4) SQL> DESCRIBE NATION 名前 NULL? 型 ----------------------------------------- -------- ---------------------------- CODE NOT NULL NUMBER(5) NATION NOT NULL VARCHAR2(28) CAPITAL VARCHAR2(20) AREA NUMBER(22) POPULATION NUMBER(22) 回答のほどよろしくお願い致します。

関連するQ&A