中小企業診断士 第1次試験 データベースとネットワーク・システム構成 練習問題 第3問: 表「顧客」には、顧客番号が K1、K2、K3、K4 の4行がある。表「注文」は次のとおりである。 501:顧客番号K1 502:顧客番号K1 503:顧客番号K
表「顧客」には、顧客番号が K1、K2、K3、K4 の4行がある。表「注文」は次のとおりである。
| 注文番号 | 顧客番号 |
|---|---|
| 501 | K1 |
| 502 | K1 |
| 503 | K2 |
| 504 | K2 |
| 505 | K9 |
次のSQL文を実行したときに返る行の数として、最も適切なものはどれか。 SELECT 注文.注文番号, 顧客.顧客番号 FROM 注文 LEFT OUTER JOIN 顧客 ON 注文.顧客番号 = 顧客.顧客番号
解答と解説を先に見る
先に見ると、この問題は今回は育ちません。
正解: 5. 5行
「5行」が適切です。左外部結合(LEFT OUTER JOIN)は、左に書いた表の行を、結合の相手が無くても少なくとも1回は結果に残し、相手の無い行では右の表の列を NULL にします。
この SQL 文では、FROM の直後に書いた表「注文」が左の表です。注文501〜504 は、顧客 K1・K2 とそれぞれ1行ずつ突き合わさります。
表「顧客」に相手の無い注文505 も、顧客番号を NULL にした行として残るので、合わせて5行です。表「顧客」の顧客番号は1行に1つなので、注文1件が2行以上に増えることはありません。
「4行」は、両方の表に相手がある組だけを返す内部結合の行数です。「6行」は、左右を取り違えて表「顧客」の行をすべて残した数で、内部結合の4行に注文の無い K3・K4 を足しています。
「7行」は、両方の表の相手の無い行をすべて残す完全外部結合の数(4+1+2)です。「20行」は、結合の条件を付けずにすべての組合せを作る直積の数(5×4)です。
左外部結合で必ず残るのは、FROM の直後に書いた左の表の行だ、と押さえましょう。
関連キーワード: SQL・左外部結合・内部結合・NULL
2026年度版 みんなが欲しかった! 中小企業診断士の教科書 (下) 経済学・経済政策、経営情報システム、経営法務、中小企業経営・中小企業政策
Amazon でテキストを見る模試 (25問)
この問題が解けたら、本試験はどうですか?本番形式で、ほかの科目もまとめて確かめる
本番形式の模擬試験で実力チェックPremium (月980円)Premium (ご利用中)制限時間 1時間