SQLのWITH句で再帰問合せを試してみる
2014 年 12 月 15 日 by O谷WITH句自体はoracle9iからサポートされているので10年以上前のものですが、

WITH句自体はoracle9iからサポートされているので10年以上前のものですが、

前回、enchant.jsの当たり判定がイケてない理由を説明しました。
回転する矩形同士の衝突判定を自前で実装することを目標に、考察を進めていきます。
今回はSQLのWITH句をご紹介させて頂きます。
WITH句ではSQL文中で利用できる一時表を定義でき、そのSQL文中であれば繰り返し利用できます。
(SQLの実行環境とデータについては、以前にご紹介させて頂きましたクラウド上でSQLが実行できる APECとそのサンプルデータを利用しています。 )
まずWITH句を利用しない場合のSQLがこちらです。

これをWITH句で書き換えるとこうなります。

インラインビューやサブクエリーに記述した内容をWITH句に定義することで可読性も上がりますし、 同じサブクエリーを複数回利用したい場合などにも有効です。
今回、ご紹介したSQLだと効果が分かりづらいかもしれませんが、複雑なSQLを記述する際などは大変便利なので使ってみてください。
なお、WITH句では他にも再帰SQLとして実装する事も可能ですが、また別の機会にご紹介させて頂きます。
使いやすい和製ゲームエンジンenchan.jsですが、当たり判定がイケてないようです。
今回は「移動系コマンド」をご紹介しようと思います。
例えば、以下のように1行が長い(25行目)、行内で折り返されている様な文章があったとします。
カーソルは文章冒頭の「There are」の「a」にあります。
通常ここで、下に移動するコマンド「j」を押すと、26行目に移動します。
前回、マス目の大きさと開始点が成功率に影響がある、ということがわかりました。
前回のマス目は正方形のみだったので、今回は長方形も含めて結果を見てみることにします。
WindowsとMacにしか対応していないアプリケーションを試してみたくなったのですが、我が家のPCはUbuntuです。
そこで、Ubuntuのパーティションを縮小してWindows7をインストール、デュアルブート環境を作成することにしました。
自動テストで有名なSeleniumですが、核になる技術はブラウザを自動運転するWebDriverです。
これを使えば、ブラウザが必要な操作も自動化できてしまいます。
RubyとSeleniumは非常に相性が良いと感じます。