goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

グーグルがケータイ用OSを作ると、やっぱ、マイクロソフトは涙目なのかなあ?

2007-06-03 22:35:18 | Weblog

 金曜日に書いたように、

ここのニュース
[WSJ] Google、携帯電話OSを開発中
http://www.itmedia.co.jp/news/articles/0706/01/news066.html

によると、グーグルがケータイ用OSを開発してるようだけど(アプリも)、

もし、グーグルがケータイOSにでてくると。。。

パソコンOSの覇者マイクロソフトは、涙目(;_;)
なのかなあ。。。

でも、グーグルがケータイOSを作って、Googleのアプリがパソコンでもケータイでも動くようになると、ケータイの2.0っていう感じがするかも。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

「骨太方針案にサマータイム検討を明記」って、システム的に大丈夫なの。。。

2007-06-03 19:14:44 | Weblog

ここのニュース
骨太方針案にサマータイム検討を明記、温暖化対策に重点
http://www.yomiuri.co.jp/politics/news/20070602i101.htm

これって、システム的にだいじょうぶなの?
サマータイムになったときに、1時間早めないといけないんでしょ、
いっせいにコンピューターの時間を変える?
さらに、早めたとき、1時間分だけ飛んじゃう時間があるんじゃないかなあ?
そのとき、つまり存在しない時間が出来ちゃう場合の処理とか、大丈夫なのかなあ
(元に戻すときは、1時間分、2回やるのかなあ?よくわかんないけど)

なんか、サマータイムで削減できる費用より、コンピュータ対策費や問題に対する障害対応費用のほうがかかりそうな気がするのは、ウィリアムのいたずらだけ??




  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Hello World程度のデータベース(その22:外部スキーマ(6)SQLその5)

2007-06-03 14:01:47 | Weblog

情報処理とは何から、データベースの基本的な話(情報処理試験のデータベーススペシャリスト程度の話まで)を書く、土日のシリーズ「Hello World程度のデータベース」です。

いま、SQLをやっています。
SQLは検索(select)、挿入(insert)、削除(delete)、更新(update)とあって、前回は、2つ以上の表の操作として、Accssを使って、

を行うと、

SELECT SHAIN_TBL.SHAINID, SHAIN_TBL.SEI, SHAIN_TBL.MEI
FROM SHAIN_TBL INNER JOIN SYUSSEKI_TBL ON SHAIN_TBL.SHAINID = SYUSSEKI_TBL.SHAINID
WHERE (((SYUSSEKI_TBL.EVENTID)=123));

というカタチになるということをやりました
(実際のテーブルと、上記SQLを出す方法は、前回を参照)

今回は、2つの表のいくつかの結合のしかたをやります。




■下準備(データを入れる)

まず、前回のテーブルの
SHAIN_TBLにこんなかんじ


SYUSSEKI_TBLにこんなかんじ


で、データをいれます。あとあとの説明のため、SHAIN_TBLに
ZYOSHIというのを追加しています。
これは、その人の上司の従業員番号が入っていて、社長は上司が
いないので、0番とします。
 それと、入社年、給与種別、給与に関しては、今回は関係ないので
入力していません。
 また、この名前に関してはフィクションであり、実在する人とは
一切関係ありません(ちなみに、高校講座の聞き手の人たちの名前です)




■INNER JOIN(内部結合)

で、前回のように普通に結合すると、結果はこうなります

つまり、FROM句に書いた条件、
SHAIN_TBL.SHAINID = SYUSSEKI_TBL.SHAINID
社員テーブルの社員IDと、出席テーブルの社員IDが同じ1番と2番
の人が表示されます。




■外部結合

 上記の方法では、出席者全部はでていません。
 なぜなら、出席テーブルの社員番号3番が、社員テーブルにないからです。
 ちなみに、この人は、清水 祥恵(しみず さえ)さんで、もうすでにやめたので
社員テーブルには、ないものとします(2006年度には社員でいたため、2006年度
慰労会にはでていたものとします)。

 このようなとき、出席者全員をだしたい、つまり、出席者テーブルの対象データは、すべて出力したい、結合できないデータは空欄(NULL)でいいという場合、Accssでは、

1.クエリをデザインで開いて
2.リンクしている線のところをダブルクリックすると以下のダイアログがでるので、
  図のように

  3をチェックし、SYUSSEKIテーブルのデータを全部出るように設定して
  OKして、保存
  →なお、一番初めの項目、いままで社員テーブルの社員IDを表示するようにして
   いましたが、出席テーブルの社員IDを出力するように変えています
   つまり、こんなかんじになります。


そうすると、再度クエリを開くと、

こんなかんじで、出席テーブルのデータが全部入っています。
このときのSQLをみてみると。。。


SELECT SYUSSEKI_TBL.SHAINID, SHAIN_TBL.SEI, SHAIN_TBL.MEI
FROM SHAIN_TBL RIGHT JOIN SYUSSEKI_TBL ON SHAIN_TBL.SHAINID = SYUSSEKI_TBL.SHAINID
WHERE (((SYUSSEKI_TBL.EVENTID)=123));


 赤字のところが、自然結合の場合との相違点です。
 RIGHT JOINというところが違います。
 これは、右側の表=出席テーブルのほうはすべてだし、条件が一致したら、値もだす(一致しないところはNULL)というものです。




■自己結合(自分のテーブルと結合する)

 では次に、上司の名前を出すことを考えましょう。
 上司の名前も社員テーブルにあります。その場合は、どうなるのか。。

 まず、こんなかんじで、Accessで定義されることになります。

そうすると、上司の名前もでてくるわけですが、
この場合のSQLは、Accessで確認すると、こうなっています。


SELECT SHAIN_TBL.SHAINID, SHAIN_TBL.SEI, SHAIN_TBL.MEI, SHAIN_TBL_1.SEI
FROM SHAIN_TBL LEFT JOIN SHAIN_TBL AS SHAIN_TBL_1 ON SHAIN_TBL.ZYOSHI = HAIN_TBL_1.SHAINID;


今回変わっていることはテーブル名 AS 自分が付けたテーブルの名前という設定をしているところです。これによって、同じ社員テーブルでも、ASを使って別の名前を使うことによって、あたかも2つのテーブルを使っているように操作できます。

 このように、自分のテーブルを結合することを自己結合といい、
 それには、ASを使ってテーブルに別名をつけることで、行えます。

なお、ASは別に自己結合以外の目的で使ってもかまいません。
たとえば、SHAIN_TBL AS S とすれば、SHAIN_TBL.SHAINIDをS.SHAINIDとかけます。
このようにテーブルの名前が長いとき、書くのに面倒などというときにも使います。

また、今回は、左側の表の値を全部出す(社長は上司がいないので、社長もだすためには、内部結合では無理で、左側の表を全部出す指定をしないといけない)ようにしています。
 その指示は、LEFT JOINです。

 前のRIGHT JOINとあわせ、このように、どちらかのテーブルをすべて出すには、LEFT JOIN,RIGHT JOINを使い、この2つをまとめて、外部結合といいます。




■自然結合

 今回の一番初めの出席テーブルと社員テーブルにおいて、どちらも社員IDが入っていて、それで結合しています。
 このように、複数のテーブルをJOINするとき、同じ項目名の項目で内部結合する場合、

SELECT SHAIN_TBL.SHAINID, SHAIN_TBL.SEI, SHAIN_TBL.MEI
FROM SHAIN_TBL NATURAL JOIN SYUSSEKI_TBL
WHERE (((SYUSSEKI_TBL.EVENTID)=123));

 のように、NATURAL JOINとかいて、ON句で、どこで接続するのかを書くことを省略できるものもあります。
 この場合、NATURAL JOINを自然結合といいます。
 ただし、Accessでこれをやろうとすると(SQL入力画面でNATURAL JOINと書いて保存しようとしても)構文エラーになってできませんでした。




ということで、結合についてはこれでおしまい。
次回のこのシリーズは、副問い合わせについてです。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする