
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
oracleの分割delete
-
SQL GROUPで件数の一番多いレコ...
-
SET句内で複数の条件を指定して...
-
select句副問い合わせ 値の個...
-
unionでマージした副問合せを結合
-
MERGE文を単体テーブルに対して...
-
テーブルの列名をデータとして...
-
OraclのSQL文について(No2)
-
Accessで日付が変わると番号が...
-
ADO VBA 実行時エラー3021
-
Oracleでの文字列連結サイズの上限
-
OracleのSQL*PLUSで、デー...
-
ACCESSの集計クエリで3件ある...
-
ACCESSで大量の更新を行うと「...
-
ADOでエクセルからアクセス...
-
PHP+MySQL
-
Excelで、改行がある場合の条件...
-
キーが同じを複数行を1行にま...
-
Accessで別テーブルの値をフォ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
GROUP BYを行った後に結合した...
-
select句副問い合わせ 値の個...
-
select insertで複数テーブルか...
-
外部結合とor条件混在の記述方法
-
MERGE文を単体テーブルに対して...
-
SQL GROUPで件数の一番多いレコ...
-
SELECTの結果で同一行を複数回...
-
oracleの分割delete
-
集計後の数値が倍になる
-
固定値を含む結合と複数テーブ...
-
SET句内で複数の条件を指定して...
-
unionでマージした副問合せを結合
-
COUNTの取得方法(?)について...
-
Access 2つのテーブルで数量...
-
他のテーブルを参照した値はupd...
-
SQLの書き方(チェックボックス)
-
SQLで複数の条件がある場合
-
複数テーブルのMAX値の行データ...
-
半角英数字混在データから数字...
-
結合と副問い合わせの違い
おすすめ情報