- ベストアンサー
情報処理技能検定1級(データベース)勉強中の者がわからない処理条件の問題
- 情報処理技能検定1級(データベース)を取得するために勉強中の者が、サンプル問題の処理条件1でわからないことがあります。具体的には、「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題です。自分でクエリを作成して条件を抽出し、割引加算フィールドを作成しましたが、顧客マスタの割引率フィールドに反映させる方法がわかりません。リレーションシップで結合させても更新されない状況です。初心者ですが、どなたか教えていただけないでしょうか。
- 情報処理技能検定1級(データベース)の勉強中の方が、サンプル問題の処理条件1でわからない部分があります。具体的には、「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題です。クエリを作成して条件を抽出し、割引加算フィールドを作成しましたが、顧客マスタの割引率フィールドに反映されない状況です。初心者なので、どなたか教えていただけないでしょうか。
- 情報処理技能検定1級(データベース)を取得するために勉強中の方が、サンプル問題の処理条件1でわからないことがあります。「請求月3月で金額10万以上のレコードの割引率に0.05を加算して更新しなさい」という問題に取り組んでいますが、クエリを作成しても顧客マスタの割引率フィールドに反映されません。初心者なので、どなたか教えていただけないでしょうか。
- みんなの回答 (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文を使いこなせるようになるには、かなりの勉強が必要です。リレーショナルデータベースの成立そのものに関わる結構奥深いコマンドなものですから。)
その他の回答 (1)
- mitoneko
- ベストアンサー率58% (469/798)
update 顧客マスター as km set 割引率=割引率+0.05 where km.顧客CO = (select 顧客CO from 請求テーブル as st where km.顧客CO = st.顧客CO and 請求月 = '3月' and 金額>100000) で、出来ると思いますが・・・即席で書いたので検証はしてません。細かいミスがあるかも。 ただ・・・「レコードの」割引率????このテーブルって、商品区分がレコードのものだけ割引ける構造には見えない・・・文章は、条件に適合するデータベースレコードの意味かしら?それなら通るけど。
補足
mitoneko様 早速ありがとうございます。 当方、正真正銘のシロウトでして、お教え頂いた様なSQLで 処理する方法がチト・・(苦笑) この試験は、ACCESS(2003or2007)を使って処理する試験でして、 図々しい質問の仕方で大変恐縮なのですが、もしご存じであれば、 mitoneko様なら、ACCESSで「処理条件1」をどのように処理するか、を 教えて頂けると助かります^^;
お礼
おお~大変わかりやすい回答をありがとうございます! 御蔭様で、解くことが出来ました。ここだけが どう~してもわからなかったので、本当に助かりました^^ 今の所、仕事で使うわけでは無いのですが、 「空いた時間で色々勉強しておきたい」という動機で 今回この試験に挑戦しようと思ったもので・・ アドバイス頂いた様に、SQL文の基本も頑張って勉強したいと 思います p(^_^)q ご親切な回答、ありがとうございました m( )m