投稿

12月, 2022の投稿を表示しています

12月23日(金)1、2コマ目

イメージ
前回の確認テスト 正解例をあげておきます。 ほとんどのかたがSQLでつまづいてました。 あと、demo2022ユーザーで接続している人がかなりいました。自分のスキーマを利用してください。 今後、demoユーザーで接続している場合は、無条件にxにします。 今日、やったこと C#+ODP.NET確認テスト1の解説 ExecuteScalar()の練習問題 ODP.NETで更新系SQLの実行 [確認テスト]C#+ODP.NET確認テスト2 今日のホワイトボード C#+ODP.NET確認テスト1の解説 テーブルの結合条件 往々にしてテーブル間の参照関係が結合条件になる。 図 テーブル間の参照関係 GROUP BYをつかうと SELECT句には GROUP BY指定列 グループ関数 のみ。 図 select句にはgroup by句に指定した列のみ 商品ごとの売上金額出力(ついでに金額も出力したい) SELECT句で 商品名 と 価格 を出力するには GROUP BY 商品名, 価格 とする必要がある。 ただ、GROUP BY 商品名, 価格 とすると、商品ごとにはならない気がする… GROUP BY 商品名, 価格 とすると  ①まず、商品名でグループ化  ②①のグループを価格でさらにグループ化 <= グループを細分化するイメージ のようにグループ化される。 まちがっても、  ①まず、商品名でグループ化  ②価格でグループ化 <= ①のグループをリセットしてグループ化するイメージ ではない!! このデータでは商品名と価格は1対1の関係になっているため、商品名でグループ化後、価格でグループ化してもグループは別れない。よって、商品名でグループ化と同じ。 図 group by句とselect句 ExecuteScalarの練習問題 正解例をあげておきます。 練習1 CS_商品マスタから最高値を検索 練習2 コマンドライン引数で指定したグループに属する商品の商品点数を検索。 ODP.NETで更新系SQLを実行する ポイントはSQL実行メソッドが ExecuteNon...

12月22日(木)1コマ目

イメージ
今日、やったこと [確認テスト]C#+ODP.NET 確認テスト1 検索結果が単一値の場合 今日のホワイトボード 検索結果が単一値の場合 今までやり方では、検索結果が単一値の場合、めんどくささを感じてしまう。 検索結果を取り出すために、 OracleDataReaerのRead()を呼び出して、検索結果の1行目に移動 OracleDataReaderに列名を指定して、検索結果取り出し をする必要がある。が、たかだか1個だけの検索結果取り出しのために、いろいろやるのはめんどくさい。 できれば、SQL実行、検索結果取り出しを一気にやりたい。 図 ExecuteReader()とExecuteScalar() ExecuteScalar()メソッド OracleCommandのExecteScalar()メソッドは検索結果の1行目1列目の値を返す。 検索結果が単一値の場合、ExecuteScalar()が便利。 サンプルコード 授業で作ったサンプルのソースコードをあげておきます。 次回は ExecuteScalar()に慣れてもらいます。あとは、更新系SQLの実行。  

12月16日(金)3、4コマ目

イメージ
今日、やったこと ODP.NET 練習1~5解説 今日のホワイトボード ODP.NET練習問題1 練習1~5解説 練習1 CS_売上データ、CS_商品マスタ、CS_グループマスタを結合して、全件検索した結果を表示。 練習2 CS_売上データ、CS_商品マスタを結合し、商品名でグループ化。各グループで数量列の総和を計算。 練習3 CS_売上データ、CS_商品マスタ、CS_グループマスタを結合し、グループ名でグループ化。各グループで数量列の総和を計算。ただし、表示するのは売上総額がコマンドライン引数指定値以上のグループのみ。 練習4 CS_売上データ、CS_商品マスタを結合し、売上IDでグループ化。各グループで数量×価格を計算し、その総和を売上総額として表示。 練習5 CS_売上データ、CS_商品マスタ、CS_グループマスタを結合し、各グループで数量列の総和、数量×価格の総和を計算。 ODP.NET練習問題2 練習1~4解説 練習1 まず、CS_売上データ、CS_商品マスタ、CS_グループマスタを結合し、グループ名が指定値の行を検索。 商品別売上総数なので、商品(商品ID、商品名、CS_商品マスタのID)でグループ化。商品名を出力したいので商品名でグループ化。 各グループの数量列の総和が売上総数。 練習2 商品別売上金額なので、商品名でグループ化(商品名を出力したいため商品名でグループ化)。 各グループで数量×価格の総和を計算した結果が売上金額。 最後に、売上金額が指定値の範囲にあるグループを検索する。グループに対する条件なので、HAVINGを使う。 練習3 服問い合わせを使う必要あり。 服問い合わせで指定グループのなかの商品の最高値を取得。 同じグループの商品で取得した最高値と価格が等しい商品が求めたい商品。 練習4 副問い合わせを2重で使う。 まず、指定グループの商品ごとの売上総数を求める。(副問い合わせ1) 次に副問い合わせ1の結果から、売上総数の最大値を取得。(副問い合わせ2) 指定グループの商品ごとの売上総数が副問い合わせ2の結果と等しい商品を検査。 この商品が求めたい商品。 [確認テ...

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

イメージ
今日、やったこと [確認テスト]クラスの確認テスト3 C#+ODP.NET練習問題1 今日のホワイトボード C#+ODP.NET練習問題1 パラメータマーカー部が文字列の場合 OracleParameterのインスタンス生成時に第2引数でパラメータマーカー部の型を指定します。  今までは数値型だけだったので、 OracleDbType.Decimal を指定していました。 文字列型の場合は  OracleDbType.NVarchar2  を指定します。 図 パラメータマーカーが数値型の場合 正解例 練習1 単純な全件検索です。 練習2 検索条件はありませんが、グループ化が必要です。 練習3 検索条件があります。パラメータマーカーを使ってください。 練習4 検索条件があります。パラメータマーカーを使ってください。 練習5 検索条件が2つあるため、パラメータマーカーも2つ使います。 なお、グループ名は文字列です。OracleParameterの型指定に注意してください。 次回は テストの解説をします。