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)
No.1ベストアンサー
- 回答日時:
元になるテーブルにあるレコード数が違うから
1国=1発明ではないのでしょう?
この回答への補足
回答ありがとうございます。
ということは主問合せの表を変えると件数が絶対に変わってしまうのでしょうか?
出力件数を同じにする文法があれば教えてほしいのですが。
No.2
- 回答日時:
INVENTION を主にする場合、同じ国が複数出ていると思うので、国コードでグループ化するといいはず…きっと
この回答への補足
回答ありがとうございます。
下記、SQL命令文でうまくいきました。
あと、方法1:主問合せでNATION表を利用する 方がうまくいきません。
私の考えた下記SQL文では実行結果が80件返ってしまいます。
答えは方法2と同じ5件ですがどこが悪いのでしょうか?
方法1失敗!
SELECT CODE FROM NATION WHERE (POPULATION / AREA) <=ANY(SELECT 100 FROM INVENTION)
方法2実行結果成功!
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP DBのハッシュ化したパスワードをpassword_verifyで戻し照合したのですが上手く行きません 2 2023/02/06 13:24
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Accessにインポートしたら並び...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
ACCESSにて全項目(レポート)...
-
3つ以上のテーブルをUNIONする...
-
ACCESS 『DoCmd.OutputTo』に...
-
ACCESS【更新クエリの中断がで...
-
データの二重表示の原因
-
Access 1レコードずつcsvで出力...
-
XamppのMySQLへとレコードが登...
-
ACCESSのBookmarkプロパティの...
-
SELECT COUNT(*) について ( PHP )
-
SQLServerで同一条件レコードの...
-
(ACCESS)並び替えをしないで...
-
排他モードで開く場合は、どう...
-
アクセス重複データ
-
Access2007 削除クエリで複数テ...
-
カラム数が多いテーブルの速度
-
ManagementStudioからのデータ削除
-
エクセル
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
3つ以上のテーブルをUNIONする...
-
2つの項目が重複するレコード...
-
数百万件レコードのdelete
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
Access VBA Me.Requery レコー...
-
ACCESSのBookmarkプロパティの...
-
Access 1レコードずつcsvで出力...
-
Access 削除クエリが重い
-
ManagementStudioからのデータ削除
-
SQLServerで同一条件レコードの...
-
非連結サブフォームのレコード...
-
Accessでレコードが更新された...
-
Accessでの排他制御
-
(ACCESS)並び替えをしないで...
-
Accessで重複したデータを一件...
-
Accessでの禁止文字チェック
-
Access カレントレコードがあり...
-
ACCESSファイルを開こうとする...
-
ACCESS【更新クエリの中断がで...
おすすめ情報