令和4年度 秋期 午前Ⅱ 問21
データベース
表 R と表 S に対して,次の SQL 文を実行した結果はどれか。
R
| X | Y |
|---|---|
| A001 | 10 |
| A002 | 20 |
| A003 | 30 |
| A005 | 50 |
S
| X | Z |
|---|---|
| A002 | 20 |
| A003 | 30 |
| A004 | 40 |
〔SQL 文〕
SELECT R.X AS A, R.Y AS B, S.X AS C, S.Z AS D
FROM R LEFT OUTER JOIN S ON R.X = S.X- ア| A | B | C | D | |---|---|---|---| | A001 | 10 | NULL | NULL | | A005 | 50 | NULL | NULL |
- イ| A | B | C | D | |---|---|---|---| | A002 | 20 | A002 | 20 | | A003 | 30 | A003 | 30 | | NULL | NULL | A004 | 40 |
- ウ| A | B | C | D | |---|---|---|---| | A001 | 10 | NULL | NULL | | A002 | 20 | A002 | 20 | | A003 | 30 | A003 | 30 | | A005 | 50 | NULL | NULL |
- エ| A | B | C | D | |---|---|---|---| | A001 | 10 | NULL | NULL | | A002 | 20 | A002 | 20 | | A003 | 30 | A003 | 30 | | NULL | NULL | A004 | 40 | | A005 | 50 | NULL | NULL |
答えと解説を見る
✓ これが正解ウ| A | B | C | D | |---|---|---|---| | A001 | 10 | NULL | NULL | | A002 | 20 | A002 | 20 | | A003 | 30 | A003 | 30 | | A005 | 50 | NULL | NULL |
解説
左外部結合なのでRの4行を全部残し、相手が無い行はNULLです。
LEFT OUTER JOIN は左外部結合で、左に書いた表 R の行をすべて結果に残します。右の表 S に結合条件 R.X = S.X を満たす行があればその値を並べ、無ければ S 側の列を NULL にします。R の行を上から見ると、A001 は S に無いので C と D が NULL、A002 と A003 は S にあるのでそれぞれの値が入り、A005 も S に無いので NULL になります。結果は R と同じ4行です。S にだけある A004 は、左の表に行が無いので結果に出てきません。結合の種類によって、どちらの表の行が必ず残るかが変わる点を押さえておきます。
ほかの選択肢はなぜ違うのか
- ア| A | B | C | D | |-…:A001 と A005 の2行だけで、S に相手のいない R の行しか残っていません。これは一致しなかった行だけを取り出した形です。左外部結合では、一致した A002 と A003 の行も結果に含まれるので、行が足りません。
- イ| A | B | C | D | |-…:R にだけある A001 と A005 が消え、S にだけある A004 が NULL と並んで出ています。これは右の表 S の行をすべて残す右外部結合の結果で、左の表の行を残すという指定と向きが逆です。
- エ| A | B | C | D | |-…:R にしか無い行と S にしか無い行の両方を残した5行になっています。これは両側の行をすべて残す完全外部結合の結果です。左外部結合では S にだけある A004 の行は出てこないので、1行多くなっています。
出典:令和4年度 秋期 情報処理安全確保支援士試験 午前Ⅱ 問21
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)