今日はバレンタインデー。

内心ドキドキしていた学生時代が懐かしい。

あ、大学生時代ね。

中高は男子校すから。

いや、言い訳なのは分かってる。

男子校でも学校の行き帰りに山ほど貰ってる奴もいたもんなあ。

アメトーークの“学生時代イケてなかった芸人”を観て、なんだか笑えない自分がいる。

ま、結局“大学生デビュー”も果たせないまま卒業しちゃったけどね。

そんな自分が2回も結婚してるってどうよ?

人生はわかんないもんだ。

そんなことはどうでも良い。

今日、filemakerでの「Direct Mail Sticker Printer (通称DMSP)」の作成にやっと目処が着いた。

必要な人にとってはとっても必要な、夢のマシンを産み出す。

ボク、ドラえもん。

でも、お腹にポケットはない。

使い慣れないアプリケーションをこねくり回して、それはそれは必死である。

そんな思いをしながらも、今後さらにfilemakerで何かしらを開発する機会はあまりないと思う。

身に着けたスキルはムダになるのか?

この1ヶ月間は、のび太に捧げただけの1ヶ月間だったのか?

いやいや。

このまま終わるドラえもんではない。

filemakerというデータベースをこねくり回してみて、ものすごく大きな事に気付けた。

データベースってすげえって事だ。

ドラえもん、気付く」の巻。

いやさあ、前から書いているように、phpも何もかも「独学」なのよ。

基本的には、ウェブ上に転がってたり参考書に載ってるサンプルソースを解読して、それを独自にこねくり回して応用してきたワケよ。

つまり、phpの様々な関数を知識として身に付けた上で、その中からセレクトしてソースを書いてきたのではなく、サンプルソースの中に出てきた関数のみでやりくりして、なんとかソースを書いてきたのですよ。

他に便利な関数があったとしても必要最小限の知識があれば、あとは根性とアイディアでなんとかなっちゃうもんねえ。(その分、冗長なソースにはなっちまうが。)

んで、その“最たるモノ”が、MySQLのクエリ文である。

最初に書いたMySQLのクエリ文がコレ。

$conn = mysql_connect($db['host'], $db['user'], $db['pass']);
$select = mysql_select_db($db['dbname']);
$sql = "SELECT * FROM {$db['dbname']}.{$tblname}";
$res = mysql_query($sql,$conn);

基本中の基本、である。

アスタリスク(*)? なにそれおいいしいの?

何がなんだかよく分かららないまま、とにかく“魔法の言葉”のようにこれさえ書いておけばデータベースからデータを呼び出せる!ってことが分かればそれで十分でしょ?

データを呼び出せさえすればあとはこっちのモン。

phpの方でなんとか加工して、ちょいのちょいのちょいである。

これで今までやってきた。

世の中のphpプログラマーの皆さん、そしてデータベースストラクチャーの皆さん。

いや、すべてのホモサピエンスの皆さん!!!

ごめんなさい!!!

その通りです!!!

MySQLが(というか世の中の殆どのデータベースが)“リレーショナルデータベースである”ってことを、全くもって理解しないままここまで来てしまいました!!!

ごめんなさい!!!

その通りです!!!

基幹システムのデータベースのリレーションシップがイケてないなどと言いながら、MySQLのリレーションシップを全くもって理解しないままここまで来てしまいました!!!

ごめんなさい!!!

その通りです!!!

複数のテーブルから関連したデータを呼び出すのに、ひとつのテーブルにクエリ―文を発行してリレーションデータを取り出し、while文で廻しながらもうひとつのテーブルにまたクエリ―文を発行して、見る人が見たら蕁麻疹が出そうなソースを書いていたのはボクなんです!!!

ごめんなさいごめんなさいごめんなさい!!!

ひぃ~~~~~~~~!!!!!!

はあ、はあ、はあ、はあ、、、、、

反省しました。

そして、MySQLのまだ見ぬ世界に大きな魅力をひしひしと感じました。

なので、これから勉強します。

早速、“基礎からのMySQL”、買いました。

んで、とりあえず、一部のソースを書き換えてみました。

今まで書いていたソースがコレ。(恥部を晒しています。)

$conn = mysql_connect($db['host'], $db['user'], $db['pass']);
mysql_select_db($db['dbname']);

$sql = "SELECT * FROM `table1`";
$res = mysql_query($sql,$conn);
while($row = mysql_fetch_assoc($res)){
  $id = $row['id'];
  $data_a = $row['a'];
    
  $sql2 = "SELECT * FROM `table2` WHERE `id` = '{$id}'";
  $res2 = mysql_query($sql2, $conn);
  $row2 = mysql_fetch_assoc($res2);
  $data_b = $row['b'];
  $data_c = $row['c'];
  ・・・
  ・・・
}

新しく書いたソースがコレ。

$conn = mysql_connect($db['host'], $db['user'], $db['pass']);
mysql_select_db($db['dbname']);

$sql = "SELECT `id`, `a`, `b`, `c` FROM `table1` JOIN `table2` USING(`id`)";
$res = mysql_query($sql,$conn);
while($row = mysql_fetch_array($res)){
  $id = $row['id'];
  $data_a = $row['a'];
  $data_b = $row['b'];
  $data_c = $row['c'];
  ・・・
  ・・・
}

いやあ、ホント恥ずかしい、、、

まさしく、これがリレーションシップですよねえ、、、

“教えて!goo”で、「基本を理解していないですね?SELECTで*は、テストレベル以外で使ってはいけません。」て書いてあった。

アスタリスク、おいしくないんですなあ、、、

はい、基本を理解していません。

さっき、アスタリスクは「全部のカラム」を表すことを初めて知りました。

魔法の言葉では、ないんですなあ、、、

まあそんなワケで、filemakerを通してMySQLの可能性を痛感しましたとさ。

勉強します!

でも、明日は久しぶりの休みなので今日は寝ます!