OutSystemsでのSQLコンポーネントを使うときのコツ
OutSystemsでのSQLコンポーネントで使用するSQL文の書き方で
テーブル名を { } で囲むというのが地味にめんどくさいので、もっと簡単にできないかと色々試してみた。
OutSystemsでのSQLコンポーネントで使用SQL文だと
Select * from Table1 Where Table.Flg=True Order by Table.ID
みたいに書くときに
テーブル名を { } で囲まないとならないというルールにより
Select * from {Table1} Where {Table1}.Flg=True Order by {Table1}.ID
こうやってテーブル名を {Table1} と書かないとならないので地味にめんどくさい。
これは、使用するテーブルが一個であれば、まだメンドクサイだけで済むんだけど
テーブルを複数使うとなるとクソメンドクサイに変わるのね。
Table1, Table2, Table3 を使う場合、こんなかんじ。
Select * from {Table1}
inner join {Table2} on {Table1}.ID = {Table2}.RefID
inner join {Table3} on {Table1}.ID = {Table3}.RefID
Where {Table1}.Flg=True
Order by {Table1}.ID, {Table2}.ID, {Table3}.ID
いちいち、テーブル名を { } で囲むのがねぇ…。
これを改善するにはテーブルの別名を付けることで解決する。
Select * from
{Table1} t1
inner join {Table2} t2 on t1.ID = t2.RefID
inner join {Table3} t3 on t1.ID = t3.RefID
Where t1.Flg=True
Order by t1.ID, t2.ID, t3.ID
Table1 を t1 という別名に、 Table2 を t2、 Table3 を t3 と名前をつけることで
その後のテーブルの参照がすべて別名で指定できるのが良い。
そのためOutSystemsでのSQLコンポーネントで使用するSQL文が格段に書きやすくなる。
テーブル名に { } を付けるっていう縛りが最初に別名を付けるだけで済む。
短縮型の別名だとわかりにくいというのであれば
こんな風にしてみるのもいいかもと思う。
Select * from {Table1} _Table1
inner join {Table2} _Table2 on _Table1.ID = _Table2.RefID
inner join {Table3} _Table3 on _Table1.ID = _Table3.RefID
Where _Table1.Flg=True
Order by _Table1.ID, _Table2.ID, _Table3.ID
これも、ちょっと面倒か…
普通に短縮形の別名を付けるほうが楽かもな…と思う。