SQLer 生島勘富 のブログ

RDB・SQLの話題を中心に情報発信をしています。

SQL的(集合的)考え方と、ループ(手続き型)の考え方1

 前回、勉強会に参加したときに感じたことの続き。

みんなはどう考えているか?

 この問題は正答率が低かった。答えを見たら「あぁ〜」ってなるレベルですが、なかなか、出てこないようです。

 問題)部品在庫から、作成可能な製品名をとる。
 ※本来はマスタテーブルと組み合わすべきですが、ツールの関係上2テーブルしか同時に表示出来ないので名称で結合する形になります。

 逆に、私には、なぜ、正答率が低いのか分からずに悩んでいました。そこに、SQLが流行らない理由があるんだろうけれど、私には分からないのです。私はタイピングが滅茶苦茶遅いので時間は掛かるのですが、頭の中では答えは何十秒かで出ています。

 皆さんが難しいと感じるものを、私が数十秒で答えまでたどり着くのは経験の差じゃない単純に考え方の違いと分かっているのですが、それをどう表現したら良いのか……、何年も考えているのですが、なにぶん、皆さんの考えていることは他人の私に分かるはずもありません。ですからあくまで想像ですけれど……。

数分で分からない人は、以下の様に考えてないか?

 つまり、こんな風に考えているのです。

 上の図の様に考えている人は、何時間考えても答えにはたどり着けません。

 答えを見て、「なるほど、こんな書き方があったか!」と思っても、実際に現場で応用することは難しいでしょう。

 もちろん、数多くのSQLのパターンを覚えて、パターン認識できるようになれば、現場でも使えるかも知れませんが、本質的に分かってないでパターンを忘れたら終わりですし、少し、パターンから外れたら簡単に袋小路に入り込むでしょう。

 では、SQL的に考えるにはどうすれば良いかは次回。