[[授業/H19/情報処理]]

*あのテーマをもう一度: [#web78425]


**Q: SQLiteって、どんな場面で役に立つのですか? [#m6b73081]
***A: 2つ以上の表を比較しなければならないとき、役に立ちます。 [#ocac6386]
授業では名簿と成績表という2つの表を結びつける操作で、データベースの使用例を学びました。この例では、
 沢山のデータが入った、2つの大きなデータの集まり(表)がある
 一つ一つを目で見て比較するのは面倒
という場合です。実際のケースとしては、次のような場合があるでしょう。
-ケース1:参加者が600人ぐらいの学会の会計をやることになりました。参加者はウェブから参加登録をするのですが、会費は郵便振替です。参加費未納者には、振り込みの督促状を送らなければなりません。また、一般会員か学生会員かに従って、振り込むべき金額と実際の振り込み金額が一致しているかどうかをチェックする必要があります。最終的には、ウェブからの参加登録データと、郵便振替の入金リストの2つを比較して、参加費未納者や、振り込み金額間違いのリストを作ります。また、登録データから、メールアドレスを抜き出して、督促状を送ります。
~このケースでは、2つの表があります。
 ウェブ登録で得られた参加者のデータ 氏名、連絡先、振り込み金額、メールアドレスなどが入っている
 郵便局から得られた振り込みリスト:振り替え伝票から氏名、日付、振り込み金額をリストにしたもの
~手作業で解決するならば、それぞれの表をエクセルで作成し、氏名で並び替え、上から順に、会費未納の人はいないか(まれに、2回振り込んでしまっている人もいます)、振り込み金額が間違っている人がいないかどうかをチェックします。でも、未納者だけなら目でみて探しても、そんなに時間はかかりませんが、振り込み金額の間違えまでもチェックしていると、かなり大変な作業になります。
~こういう場合、SQLiteを使ってmeiboとfurikomiとでもいう2つのテーブルを使えば、目でみてチェックする作業をコンピュータにやらせることができるのです。例えば、次のようなSQLを1行かけば、処理は済んでしまいます。
 > select namae, e-mail, kingaku, furikomi.kingaku from meibo 
    left outer join furikomi on meibo.namae = furikomi.namae where meibo.kingaku != furikomi.kingaku
    order by furikomi.kingaku desc;