質問: 副問合せについて nation表とinvention表より人口密度(人口/面積)が100以下の国で、発明事項がある国の国コードを表示する。 方法1:主問合せでnation表を利用する 14件 1 select distinct nation_code from invention 2* where 100 >= any(select population / area from nation) 方法2:主問合せでinvention表を利用する 80件 select code from nation where (population / area) <=any(select 100 from invention) 出力件数が方法1と2で異なるわけですが同じことをしているので(つもり)件数が違う理由が今ひとつわかりません。 よろしくお願いいたします。 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)
回答: 元になるテーブルにあるレコード数が違うから 1国=1発明ではないのでしょう?