fc2ブログ

6/24の業務報告

こんばんは,図書館情報メディア研究科の安永です.
KLC内は,中庭のドアを開けておくと風がよく通ってきもちいいですね.

本日の質問と回答です
----------

Q1.(知識情報演習I)
演習4-6で指示通りにプログラムを修正したが、画面に何も表示されない

A1.参照したいテーブルがDBに定義されていなかったことが原因だったので、テーブルが存在するか確かめる習慣をつけて下さい、と回答しました。

Q2.(知識情報演習I)
テキストを見てプログラム(ruby言語)を書いたが画面に何も表示されない.エラーが出るが意味が分からない.

A2.エラーの 「from ・・・」という部分をたどって見ると,エラーの発端がどこであったか分かります."no such clumn" というエラーは,「テーブルにそのような名前の属性はありません」という意味です.今回のエラーはSQL文で指定している属性名が,実際のテーブルには存在していないことが原因です.SQL文の select の直後 と where句内に書いてる”name”が属性名です.テーブルのスキーマ(属性名の一覧)を見て,そこにある属性名を書くといいです,と回答しました.

Q3.(知識情報演習I)
SQL文の属性名を適切なものに修正したが,きちんと表示されない.

A3.条件で指定している語句と完全一致するものがテーブル内にないことが原因でした.SQL文の like 演算子の書き方を一緒に調べ,ワイルドカード%の使い方を見てもらいました.

Q4.(知識情報演習I)
いま,ある検索語が著者名にあれば表示することができている.これを,ある検索語が,タイトルや著者名など何でもいいから何かにヒットすれば表示したいが,どうすればいいか分からない.

A4.ORという演算子を使うとできます,と回答し,ORという演算子の使い方を一緒に調べました.
A4.何でもいいから何かにヒットするようにしたい,と言っていたが,課題のプリントを見ると「検索対象はタイトルと責任表示」だけでよいことが分かったので,そう伝えました.

Q5.(知識情報演習I)
SQL文のWEHER句内にORを使ってみたが,予想以上に沢山ヒットしてしまう.

A5.「WHERE a OR b OR c LIKE 'hoge'」のようにOR文を使っていました.「WEHERE a OR 」と書くと,a というフィールドが存在するもの全て(つまり,全データ)がヒットしてしまうようですね.OR文の使い方の例を一緒に見て,「WHERE a LIKE 'hoge' OR b LIKE 'hoge' OR c LIKE 'hoge'」と書くと,期待している動作をする条件文になります,と説明しました.

Q6.(知識情報演習I)
SQL文ののWEHER句内にORを使ったが,何も表示されない.

A6.where句内の条件を一部分だけ取り出して実行すると,実行できるので,そこに,where句内の他の条件を1つずつ足して実行していき,エラーの原因となっている条件を見つけて下さい,と回答しました.

Q7.(知識情報演習I)
(報告)教えてもらった方法でエラーの出る部分を探すと,where句に「OR date LIKE 'hoge'」を足した時にエラーが出た.しかし,さらにやってみると,条件をある並び方で書けば,すべての条件を書いてもエラーは出ずに結果も表示できた.なので,これでやろうと思う.

A7.チューターとして,できれば原因をつきとめたいので,プログラムのコピーをいただけますか?と聞き,快諾していただきました.

Q8.(知識情報演習I)
SQL文でORでいくつか条件を指定したが,著者名を書いて検索した時しかマッチしない.タイトル名を書いて検索してもなにもヒットしない.

A8.Where句内の一番最初に書いた条件しか見られていないようでした.ORの書き方を一緒に調べましたが,解決策がすぐには分からなかったため,SQLを2つに分けて書く方法を提案しました.

6月24日追記:
rubyプログラムのdb.executeのブロック内の要素数の問題でした.ブロック内のsql文中に「?」を複数書く場合,それぞれの?に対応する文字列を渡す必要があるのに,1つしか渡していないことが原因でした.
間違い:db.execute{ "SELECT・・・WHERE titile LIKE ? OR author LIKE ?", str}
正しい:db.execute{ "SELECT・・・WHERE titile LIKE ? OR author LIKE ?", str, str}


Q9.SQLを2つに分けて書いたが,Internal Server Error がでてしまう.書き方がよく分からない.

A9.rubyプログラムで,「db.execute{」 内にもう一つの「db.execute{」を書いていた為,指摘して直してもらいました.

回答者:A1鈴木,A2-A9安永
--------

急に暑くなりましたね.みなさん夏バテに気をつけてくださいね!
スポンサーサイト



コメントの投稿

非公開コメント

プロフィール

ラーニングコモンジャー

Author:ラーニングコモンジャー


図情図書館にあるラーニングコモンズのブログです。

平日・休日問わず図書館の開館時間は誰でもご自由にふらっとお立ち寄りください。

月曜日ー金曜日
15:00~19:00
はチューターが待機しています。(長期休暇期間除く)

8台の全学計算機・カラープリンタ・プラズマディスプレイ・ホワイトボード・ミーティングテーブルなどは全て自由にお使いいただけます。

ぜひ素敵に活用してみてくださいね!

「KLCについて知りたい!」
「KLCに入りたい!」等ありましたら
klc[あっと]klis.tsukuba.ac.jp
まで連絡お願いします♪
(授業の質問など、チューターへの質問は受け付けていませんのでご注意ください)

【KLCスタッフ募集】
KLCはスタッフを随時募集しています。
スタッフになると普段話す機会が少ない上級生や院生の方はもちろん、先生方ともお話しする機会が多いため、仲良くなることができ、人脈が広がります!
また、学生主体でイベントを企画、実施することもできます!
そんなわけでチューター以外のスタッフも募集しています。
隔週の全体MTGに出席できる方は誰でもウェルカムです。
学年は問わず、1年生も歓迎です。
「KLCに入りたい!」という方は上記メールアドレス宛にご連絡ください。

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR