No.35 "商品"表,"在庫"表に対する次のSQL文と,同じ結果が得られるSQL文はどれか。
ここで,下線部は主キーを表す。
ここで,下線部は主キーを表す。
⭕️
❌
💾
🖊 | ☑️ |
⭕️ | [[ AnswerCalc[0] ]] % | A | [[ AnswerCalc[1] ]] |
まず設問のSQL文ですが、(SELECT 商品番号 FROM 在庫)の副問合せで"在庫"表の商品番号列に存在する値のリストを作成し、それを"商品"表の商品番号列と比較しています。比較演算子はNOT INなので、"商品"表の商品番号列の中で、"在庫"表の商品番号列に存在しない商品番号のリストが得られます。EXISTSは、親表の行を1行ずつ処理し、続く相関副問合せによって返された結果行が1つ以上存在すれば真、1つもなければ偽を返す句です。INとEXISTSは異なる意味ですが、使い方を工夫することで同じ結果を返すことが可能です。
"在庫"表の商品番号のうち、"商品"表の商品番号列の値として存在する行が得られます。上記の例でいえば、商品番号{101, 105, 102, 104}が返されます。
"在庫"表の商品番号のうち、"商品"表の商品番号列の値として存在しない行が得られます。上記の例でいえば、"結果なし"が返されます。
副問合せは、現在処理中の"商品"表の商品番号が、"在庫"表の商品番号として存在する場合に1行以上を返します。"EXISTS = 真"となる行は、両表に含まれる商品番号になります。上記の例でいえば、商品番号{101, 102, 104, 105}が返されます。
正しい。副問合せは、現在の"商品"表の商品番号が"在庫"表の商品番号として存在する場合に1行以上を返します。"NOT EXISTS = 真"となる行は、"商品"表に商品番号があるが、"在庫"表にはその商品番号がない行になります。上記の例でいえば、商品番号{103, 106}が返されます。
💾
✔️
[[ d.CommentTxt ]] |
< | > |
🥇 |