![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
OracleのSQLについて質問があります。
下記、3つのプログラムを作成する方法が分かりません。
プログラムファイルは、1ファイル、でも、3ファイルでも良い。
(1)A表に存在して、B表に存在しないデータを表示
(2)B表に存在して、A表に存在しないデータを表示
(3)A表とB表どちらにも存在するが、値が違うデータを表示
※主キーは、A,B
A表
| a | b | c |
-------------
| 1 | 1 | 1 |→(3)なので表示
| 1 | 2 | 2 |→(1)なので表示
| 1 | 3 | 3 |
| 1 | 5 | 5 |
B表
| a | b | c |
-------------
| 1 | 1 | 0 |→(3)なので表示
| 1 | 3 | 3 |
| 1 | 4 | 4 |→(2)なので表示
| 1 | 5 | 5 |
学校の問題なので、自己解決が良いのでしょうが、検討もつきません。
答え、もしくは、ヒントをご教授お願いします。
No.2ベストアンサー
- 回答日時:
「プログラム」じゃなくて「クエリ(SQL)」ですね。
先ず、(1)と(2)は主従関係のある結合になります。
これは「OUTER JOIN」と言います。これには
どちら(先に書くか後から書くか)のテーブルが主に
なるかで、LEFT(先の方)とRIGHT(後の方)の
2種類があります。
(1)の考え方
SELECT A表.* FROM A表 LEFT OUTER JOIN B表
ON A表.a=B表.b AND A表.b=B表.b
WHERE B表.a IS NULL AND B表.b IS NULL
A表とB表を結合しますが、A表が主で、左(先)に記述
してあるので、LEFT OUTER JOIN になります。次に、
結合条件を示すON句で、それぞれのaとbの関係を記述
します。この結合ではA表は全て取得され、B表に無い
項目はNULLになりますので、WHERE句でB表側の項目が
NULLという指定をすれば「A表にあってB表にない」を
抽出できます。主キー項目はNULLにできないので、
WHERE句に記述する条件はaかbの一方だけでもよい
はずです。
(2)の考え方
もう分かると思うので省略します。
(3)の考え方は両方にあるものが前提なので、主従の
関係はありません。この場合は INNER JOIN になり
ます。また、条件はA表.c<>B表.cとなります。
SELECT A表.* FROM A表 INNER JOIN B表
ON A表.a=B表.b AND A表.b=B表.b
WHERE A表.c<>B表.c
とても勉強になりました!
回答者様の文章は答えとして、
INNER JOIN とOUTER JOIN をググって、がんばってみます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- SQL Server SQL Oracle serverにって質問です。 会社テーブルがあり、そのテーブルから 社員名、給 4 2022/05/21 12:22
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
- 法人税 電子帳簿保存法について 1 2022/04/07 11:17
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- Excel(エクセル) Excelのマクロについてご教授ください 2 2023/02/25 09:43
- その他(Microsoft Office) Excel2019と365、2021 2 2023/07/08 06:22
- Google Drive Google Drive (G:)の容量を、購入した容量と一致させるにはどうすればよいでしょうか? 1 2022/04/10 22:32
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
SELECTの結果で同一行を複数回...
-
固定値を含む結合と複数テーブ...
-
select insertで複数テーブルか...
-
MERGE文を単体テーブルに対して...
-
SET句内で複数の条件を指定して...
-
oracleの分割delete
-
SQL GROUPで件数の一番多いレコ...
-
副問い合わせのinsert文
-
外部結合とor条件混在の記述方法
-
Oracle[10g]のSQL文について
-
どなたか、SQLについて教えてく...
-
Access 2つのテーブルで数量...
-
SQLでの絞り込み検索
-
複数テーブルのMAX値の行データ...
-
検索条件の指定方法をお願いし...
-
3つの表の結合
-
大量にデータを更新するテーブ...
-
Access でレコードセレクタが押...
-
SQL文で右から1文字だけ削除す...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
SELECTの結果で同一行を複数回...
-
MERGE文を単体テーブルに対して...
-
他のテーブルを参照した値はupd...
-
SET句内で複数の条件を指定して...
-
固定値を含む結合と複数テーブ...
-
SQL GROUPで件数の一番多いレコ...
-
oracleの分割delete
-
外部結合とor条件混在の記述方法
-
unionの結果は集計はできないで...
-
複数テーブルのMAX値の行データ...
-
unionでマージした副問合せを結合
-
集計後の数値が倍になる
-
構成比を求めるSQL文につきまして
-
COUNTの取得方法(?)について...
-
SQLの書き方(チェックボックス)
-
結合と副問い合わせの違い
-
DELETE 文とEXISTSの使い方につ...
おすすめ情報