• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:(シロウトです)情報処理技能検定1級(データベース)について)

情報処理技能検定1級(データベース)勉強中の者がわからない処理条件の問題

このQ&Aのポイント
  • 情報処理技能検定1級(データベース)を取得するために勉強中の者が、サンプル問題の処理条件1でわからないことがあります。具体的には、「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題です。自分でクエリを作成して条件を抽出し、割引加算フィールドを作成しましたが、顧客マスタの割引率フィールドに反映させる方法がわかりません。リレーションシップで結合させても更新されない状況です。初心者ですが、どなたか教えていただけないでしょうか。
  • 情報処理技能検定1級(データベース)の勉強中の方が、サンプル問題の処理条件1でわからない部分があります。具体的には、「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題です。クエリを作成して条件を抽出し、割引加算フィールドを作成しましたが、顧客マスタの割引率フィールドに反映されない状況です。初心者なので、どなたか教えていただけないでしょうか。
  • 情報処理技能検定1級(データベース)を取得するために勉強中の方が、サンプル問題の処理条件1でわからないことがあります。「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題に取り組んでいますが、クエリを作成しても顧客マスタの割引率フィールドに反映されません。初心者なので、どなたか教えていただけないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.2

 あはははは・・・・最近の情報処理検定のデータベース部門って・・・アクセスなの?  出かけに、問題用紙ちらっと見てだから・・・背景まで見てなかったです(苦笑)  落ち着いてみてみると、先の回答、やっぱりタイプミスありましたし。失礼しました。  雑談は、この辺にして、まず、accessでもSQLダイレクト入力できます。というか、この問題を最短時間で解くならわたしならそうするかな。QBEの構造考えるのが面倒ですから(苦笑)  アクセス2007で、検証した上でのSQLは、次の通り。  UPDATE 顧客マスター AS km SET km.割引率 = 割引率+0.05  WHERE (((km.顧客CO)=(select 顧客CO from 請求テーブル st where st.顧客CO=km.顧客CO and 請求月='3月' and 金額>100000.)));  アクセス2007ですと、クエリーの設計画面で右クリック。出てきたメニューから、SQLと指定し、テキストウィンドウに、上記のSQLをダイレクトに入力。保存して実行。    これで終わらせるのは、少々むごいので、QBEでの作り方も書いておきますね。  まず、更新クエリーの使い方・作り方は解りますね?いくら何でも、それは、OKと言うことで話を進めますので・・・。  最低でも、現時点でそのレベルは無いと、少々教えたくらいでは、あの問題を時間内に解くことは、はっきり無理です。  まず、最低限、テーブルに正しい、リレーションシップを張っておく必要があります。  この場合は、顧客マスターと、請求テーブルの間に1対多のリレーションが必要です。  新規クエリーを作成し、顧客マスターと請求テーブルを追加。  このクエリーを更新クエリーに指定します。  この時点で、各テーブルの顧客COには、リレーションの線が書かれているはずです。  グリッドに登場させるフィールドは、3つです。  顧客マスターの割引率。請求テーブルの金額。請求テーブルの請求月。  割引率の更新欄に、  [顧客マスター]![割引率]+0.05   を指定。  金額の条件欄に、   >100000             を指定。  請求月の条件欄に、  "3月"              を指定。  これで、このクエリーを保存して、実行すれば、「**件のデータを更新します。取り消しできません。」のメッセージボックスが出てくるから、承認すれば、終わりです。  ちなみに、この試験がどうのこうのというより、一般的には、データベースで検索・データ処理を行うには、大概の場合、SQLが必須です。accessがたぐいまれなる例外ですので、今後、データベース部門の勉強をしていかれるのでしたら、SQL文の基本は覚えておいた方が良いですよ。  今あるテーブルのデータ操作をするだけなら、select・insert・update・deleteのたった4つのコマンドだけですし(この文章は、詐欺です。select文を使いこなせるようになるには、かなりの勉強が必要です。リレーショナルデータベースの成立そのものに関わる結構奥深いコマンドなものですから。)  

bakagay
質問者

お礼

おお~大変わかりやすい回答をありがとうございます! 御蔭様で、解くことが出来ました。ここだけが どう~してもわからなかったので、本当に助かりました^^ 今の所、仕事で使うわけでは無いのですが、 「空いた時間で色々勉強しておきたい」という動機で 今回この試験に挑戦しようと思ったもので・・ アドバイス頂いた様に、SQL文の基本も頑張って勉強したいと 思います p(^_^)q ご親切な回答、ありがとうございました m(   )m

その他の回答 (1)

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

update 顧客マスター as km set 割引率=割引率+0.05 where km.顧客CO = (select 顧客CO from 請求テーブル as st where km.顧客CO = st.顧客CO and 請求月 = '3月' and 金額>100000)  で、出来ると思いますが・・・即席で書いたので検証はしてません。細かいミスがあるかも。  ただ・・・「レコードの」割引率????このテーブルって、商品区分がレコードのものだけ割引ける構造には見えない・・・文章は、条件に適合するデータベースレコードの意味かしら?それなら通るけど。

bakagay
質問者

補足

mitoneko様 早速ありがとうございます。 当方、正真正銘のシロウトでして、お教え頂いた様なSQLで 処理する方法がチト・・(苦笑)  この試験は、ACCESS(2003or2007)を使って処理する試験でして、 図々しい質問の仕方で大変恐縮なのですが、もしご存じであれば、 mitoneko様なら、ACCESSで「処理条件1」をどのように処理するか、を 教えて頂けると助かります^^;