投稿

2月, 2023の投稿を表示しています

2月21日(火)1コマ目

イメージ
今日、やったこと SQLのおさらい解説(問9、問10) Web+DB確認テスト3 今日のホワイトボード SQLのおさらい解説 問9 図 問9 ヒント 商品ごとにグループ化すればOKです。 しかし、商品名でグループ化すると、以下のエラーになります。 図 問9 group byでエラー グループ化した際は、SELECT句にはgroup by指定列かグループ関数しか指定できません。 SELECT句では商品ID、商品名、グループ名を出力するために、商品ID、商品名、グループ名の組み合わせでグループ化する必要があります。 商品ID、商品名、グループ名の組合わせでグループした場合と、商品名だけでグループ化した場合に違いがあるかといえばありません。 よって、ここでは商品ID、商品名、グループ名の組み合わせでグループ化してください。 図 問9 正解例 SQLのおさらい解説 問10 SQLの非等価演算子は <> です。!=ではありません。 図 問10 非等価演算子 図 正解例 今回のような「xxx列はAでなく、かつBでなく、かつCでない」はnot inを使うと便利です。  xxx not in (A, B, C) 図 問10 正解例(not in利用版) ちなみに、「xxx列はAまたはB、またはC」の場合は  xxx in (A, B, C) のようにinを使うこともできます。 Web+DB確認テスト3 正解例を挙げておきます。 Summary.cs 商品ごとの売上数量情報を受け渡すためのクラス。 ItemDAO.cs 商品ごとの売上数量を検索するためのメソッドあり。 SQLを作成するための文字列結合を行っていますが、区切りのスペースがないため、実行時にエラーになる方がおられました。 図 SQLの文字列結合時のエラー 動作確認をしてください。 Index.cshtml.cs SummaryListプロパティは商品ごとの売上数量情報。 Index.cshtml 2列の表形式で表示してほしかったのですが、1列になっているかたがちょこちょこおられました。 じかいは 2月22日(水) Web+DB確認テスト3の解説 HTMLの評価用課題 2月24日(金) データベース(ビュー)...

2月17日(金)1、2コマ目

イメージ
今日、やったこと SQLのおさらい 練習問題解説 今日のホワイトボード CS_売上データテーブル CS_グループマスタやCS_商品マスタのようなxxxマスタテーブルは頻繁にデータが更新されることはない。また、別テーブルから参照されることが多い。 CS_売上データテーブルは1件の売上が発生すると、データが登録される。 イベントごとに更新されるテーブル。   図 CS_売上データテーブル 問1 特にややこしいことはないかと。 図 問1 ヒント 並び替えのorder byですが、 ①売上IDの昇順で並び替え ②売上IDが同じ行を数量*価格の降順でさらに並び替え です。 図 売上IDだけで並び替え 図 売上IDの昇順で並び替え、さらに売上金額降順で並び替え 問2 図 問2 ヒント グループ化なしでグループ関数を使うと全行で1つのグループになる。 全売上での売上金額は以下のとおり。 図 問2 全売上での売上金額 今回ほしいのは売上IDが1、2、3の売上のみ。 売上IDが1、2、3の行だけに絞ればよいので、where句で条件指定。 図 問2 売上IDが1、2、3だけに絞り込む 問3 図 問3 ヒント まず、各グループの売上金額を出力するSQLは以下のとおり。 図 問3 全グループの売上金額 条件「売上金額が18000以上」はグループに対する条件。よって、having句で指定。 図 問3 グループ毎の売上金額が18000以上 問題の実行結果には「売上数量」の出力がありませんでした。 図 問3 正解例 問4 図 問4 ヒント group byのグループ化より前にwhere句で条件に合致するかチェックする。 where句で売上IDが1、2、3の行だけにし、そのあとグループする。 図 問4 正解例 問5 いやらしいといえばいやらしいですが、問題文のなかにxxx毎やxxx別、各xxxのようなグループ化のキーワードがありませんが、グループ化必要です。 図 問5 ヒント 図 問5 正解例 問6 商品ID、商品名を出力したい。 => 商品ID、商品名でグループ化 グループ化すると、select句に指定できるのは group by句に指定した列名 グループ関数 のみ可 。 図 問6 ヒント 図 問6 正解例 問7 あいまい検索。 あいまい検索の演算子はlike 。 DBによっては=...

2月16日(木)1、2コマ目

イメージ
今日、やったこと SQLのおさらい 今日のホワイトボード SELECT文の処理順序 この順にしたがって処理される。 図 SELECT分の処理順序 例題1 下図の検索を行うSQLを考える。 図 例題 テーブル間のリレーションシップ 参照整合性制約(外部キー制約)が指定されている列の値が等しい行が結びつくケースが多い。 図 テーブル間のリレーションシップ 〇結合条件を指定しない場合 もし、結合条件を指定しないと、各行が総あたりで結合する。 CS_グループマスタの1行目はCS_商品マスタの1行目、2行目、・・、16行目と結合する。 よって、結合後、CS_グループマスタの5行 × CS_商品マスタの16行の80行になる。 図 結合条件を指定しない場合 〇結合条件を指定した場合 リレーションに従って結合条件を指定する。 図 結合条件=>リレーションをたどる CS_グループマスタのID列の値とCS_商品マスタのグループID列の値が同じ行同士が結合すればいい。 図 結合条件を指定した場合 検索条件(行に対する条件) WHERE句で指定する条件は行に対する条件 。 条件を満たす行だけ残る。 〇orに注意!! 今回はグループ名が「にぎり」または「まき」。 orを使って条件を結合する場合、()が必要になるケースが多い。 〇()なし where句の条件は左から右に順に評価される。 図 グループ名='にぎり' or グループ名='まき' このWHERE句では、 結合条件を満たし、かつグループ名が「にぎり」の商品 => 検索結果下部の5行  か CS_グループマスタのグループ名が「まき」の行とCS_商品マスタの全行を結合 => 検索結果上部の16行 の合計21行が出力される。 〇()あり ()内は左から右の順より優先されるため、 ①まず、グループマスタはグループ名が「にぎり」または「まき」だけに絞られる ②「にぎり」と「まき」のCS_グループマスタとCS_商品マスタが結合条件で結合 以下の出力結果になる。 図 (グループ名='にぎり' or グループ名='まき') グループ化 ”グループ毎”なので、グループ名やグループID、CS_グループマスタのID列でグループ化。 今回はグループ名を出力したいので、グループ名...

2月9日(木)1コマ目

今日、やったこと [確認テスト]Razorページ+DB その2 今日の確認テスト 正解例をあげておきます。 Summary.cs 売上IDと売上金額をひとまとめにして扱うためのクラス。 SalesDAO.cs SelectAll()メソッドで売上毎の売上金額を取得する。 Index.cshtml.cs 売上情報のプロパティを持ち、OnGet()メソッドで売上一覧を取得し、プロパティにセット。 Index.cshtml 売上一覧プロパティを表形式で表示。 じかいは 多分、テストをまたまたします。  

2月2日(木)1コマ目

今日、やったこと Razorページ+DB 確認テスト1 今日の確認テスト 正解例をあげておきます。 ItemDAO.cs Index.cshtml.cs Index.cshtml じかいは またまたテストをします。