過去問解きまくり研究所 ホーム

平成30年度 春期 午前Ⅱ 問8

データ操作

NULLに関する問題

“部品”表から,部品名に‘N11’が含まれる部品情報(部品番号,部品名)を検索するSQL文がある。このSQL文は,検索対象の部品情報のほか,対象部品に親部品番号が設定されている場合は親部品情報を返し,設定されていない場合はNULLを返す。aに入れる字句はどれか。ここで,実線の下線は主キーを表す。

部品(部品番号,部品名,親部品番号)

〔SQL文〕

SELECT B1.部品番号, B1.部品名,
    B2.部品番号 AS 親部品番号, B2.部品名 AS 親部品名
      FROM 部品 [  a  ]
      ON B1.親部品番号 = B2.部品番号
    WHERE B1.部品名 LIKE '%N11%'
答えと解説を見る

✓ これが正解イB1 LEFT OUTER JOIN 部品 B2

解説

B1の行を全部残し、親が無ければNULLを付ける左外結合です。

見分ける軸は、どちらの表の行を必ず残すかです。この問合せでは、部品名にN11を含む部品B1を全部返し、親部品があればその情報を、なければNULLを並べる必要があります。B1 LEFT OUTER JOIN 部品 B2と書くと、左側のB1の行は、ON句の条件に合うB2の行がなくても結果に残り、そのときB2の列はNULLになります。親部品番号が設定されていない部品でも、部品番号と部品名が返り、親部品の欄がNULLになります。同じ表に別名を付けて親子をつなぐ形でも、残したい側を左に置いて左外結合にする、という考え方は変わりません。

ほかの選択肢はなぜ違うのか

出典:平成30年度 春期 データベーススペシャリスト試験 午前Ⅱ 問8

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)