問題:NATION表とINVENTION表より人口密度(人口/面積)が100以下の国で、発明事項がある国の国コードを表示する。
方法1:主問合せでNATION表を利用する 方がうまくいきません。
私の考えた下記SQL文では実行結果が80件返ってしまいます。
答えは方法2と同じ5件ですがどこが悪いのでしょうか?
回答のほどよろしくお願い致します。
方法1:主問合せでNATION表を利用する
SELECT CODE FROM NATION WHERE (POPULATION / AREA) <=ANY(SELECT 100 FROM INVENTION)
SELECT CODE FROM NATION WHERE POPULATION / AREA < 100;(上と同じ意味)
INVENTION表の副問合せがうまくできていないので5件出力できない?
方法2:主問合せでINVENTION表を利用する
SELECT DISTINCT NATION_CODE FROM INVENTION
WHERE NATION_CODE = ANY(SELECT CODE FROM NATION WHERE 100 >= POPULATION / AREA)
NATION_CODE
-----------
107
136
142
154
157
各表の構造はこのようになります。
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)
No.2
- 回答日時:
前回も書きましたが・・・
SELECT CODE FROM NATION WHERE (POPULATION / AREA) <=ANY(SELECT 100 FROM INVENTION);
と書くのは、
SELECT CODE FROM NATION WHERE POPULATION / AREA < 100;
に等しく、実質的にINVENTION表に関係のない問い合わせをしている。
あなたの書いた説明に当てはめると、「人口密度(人口/面積)が100以下の国」を
問い合わせしていることになり、当然、「発明事項がある国」を抽出しないので
正しい問い合わせになる訳がない。
ということなのでは?
No.1ベストアンサー
- 回答日時:
なんとしても、メンバーシップ検査を使うなら..
SELECT CODE FROM NATION
WHERE
(POPULATION / AREA) <= 100 AND
CODE IN (SELECT NATION_CODE FROM INVENTION)
な感じで書く。
この回答への補足
回答ありがとうございます。
SELECT CODE FROM NATION WHERE (POPULATION / AREA) <=ANY(SELECT 100 FROM INVENTION)
の記述でなぜ正しい結果が返ってこないかが分かりません。
回答のほどよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL うまくいきません教えてくださいお願いしますSQLです。クエリ構文です。 1 2023/07/07 12:39
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
尿検査前日に自慰行為した時の...
-
白血球が多いとどんな心配があ...
-
尿検査の前日は自慰控えたほう...
-
検便についてです。 便は取れた...
-
納豆食べた後の尿の納豆臭は何故?
-
腕を見たら黄色くなってる部分...
-
彼女のことが好きすぎて彼女の...
-
EXCELで条件付き書式で空白セル...
-
2つの数値のうち、数値が小さい...
-
精子が黄色?
-
変な話しになります。尿検査で...
-
勃起する時って痛いんですか? ...
-
エクセル指定した範囲からラン...
-
小数点以下を繰り上げたものを...
-
excelでsin二乗のやり方を教え...
-
エクセルのラベルの値(文字列...
-
リンク先のファイルを開かなく...
-
1日前の検尿
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報