【備忘録:研修課題(intra-mart)】SQL文を見やすくまとめる方法 | 株式会社アースリンク

Engineer Blog開発者ブログ

2017.6.14

【備忘録:研修課題(intra-mart)】SQL文を見やすくまとめる方法

LISA141018327531_TP_V

皆さんはじめまして!

2017年度新卒として入社しました、顔がおにぎり2974に似ているおにぎりちゃん2974です!

そんなおにぎりちゃんは現在intra-martを使用しECサイトを製作するという課題に取り組んでいるのですが、

なんといってもプログラミング未経験で入社したため分からないことばかり…

(私の現在の状態をイメージしたものが上記の画像です。。)

 

そんな分からないことだらけの日々の中で、先輩社員から教えていただいたことやこのブログに綴っていきたいと思います!

 

 

さて今回は「長いSQL文を見やすくまとめる方法」です。

 

例として下記のテーブルを使用します。

 

テーブル:商品マスタテーブル(product)

product

テーブル:キャンペーンテーブル(campaign)

campaign

 

これらのテーブルを使用して以下の条件でレコードを抽出する際、このようなSQL文を書くかと思います。

 

<条件>キャンペーンIDが”cam_01″に指定されている商品を昇順で10件抽出

 

 var sql = "SELECT * FROM product INNER JOIN campaign_details ON campaign.product_id = product.product_id WHERE campaign_id = campaign_01 ORDER BY sort_no ASC LIMIT 10";
 var tdb = new TenantDatabase();
 var res = tdb.select(sql);

 

このSQL文を実行してみたところ条件通りにレコードの抽出を行うことができました!!

after

 

しかし!!!!自分自身で書いたSQL文を見た私の第一印象…

 

 

 

長すぎやありませんかsurprise!?!?!?

 

スクロールしなきゃ見えないじゃないですかsurprise!!!!

なんとかスクロールせずに見れる方法はないのですかsurprise!!!!

 

 

そんな要望を叶えるべく、先輩社員に相談させていただいたのです。

(会話形式でご覧ください)

 

おにぎりちゃん→2974 先輩社員→laugh

2974「あの…無事にデータをとることはできたのですが、この長い文章なんとか見やすくならないでしょうか…!!」
laugh「改行してあげればいいんだよ」
2974「改行…!?SQL文を改行することができるのですね!?」
laugh「”+”でつないであげれば改行ができるよ」

 

そうして教えていただいたのがこちら!

 

 var sql = "SELECT * FROM product " +
         = "INNER JOIN campaign_details ON " +
         = "campaign.product_id = product.product_id " +
         = "WHERE campaign_id = campaign_01 " +
         = "ORDER BY sort_no ASC " +
         = "LIMIT 10"
 var tdb = new TenantDatabase();
 var res = tdb.select(sql);

 

長い文章を適当なところで区切って”+”で繋げてあげると、改行して書くことが可能なのですね!

 

さらに、SQL文を配列の中に入れて書いてあげる方法も教えていただきました。

 

var sql = new Array();
sql[ sql.length ] = "SELECT";
sql[ sql.length ] = "*,";
sql[ sql.length ] = "FROM";
sql[ sql.length ] = "product";
sql[ sql.length ] = "INNER JOIN";
sql[ sql.length ] = "campaign";
sql[ sql.length ] = "ON";
sql[ sql.length ] = "campaign.product_id = product.product_id";
sql[ sql.length ] = "WHERE";
sql[ sql.length ] = "campaign_id = campaign_01";
sql[ sql.length ] = "ORDER BY";
sql[ sql.length ] = "sort_no ASC";
sql[ sql.length ] = "LIMIT 10";
var tdb = new TenantDatabase();
var res = tdb.select(sql.join(" "));

 

まず”sql”という配列を作成し、その要素の中(length)にSQL文を区切った文字列を入れ、

その後”sql”を呼び出す際に”join”メソッドを利用して繋いであげます。

join()のカッコの中身には区切り文字を入れてあげるようです。今回は半角スペースを利用して繋いでいます。

 

このように書いてあげると一番初めに書いたSQL文と同様に認識されるのですね!

短いSQL文の場合はそのまま書いてあげるほうが勝手が良いように思いますが、

長いと感じた場合は上記のような方法でまとめてあげたほうが自分だけでなく他の人が見た際にも分かりやすいかもしれませんね。

 

特に抽出するカラム名をいくつも指定しないといけない際など、

カラムごとに分けて書いてあげるとあげるととても分かりやすいように思います。

Contact
お問い合わせ

電話番号0120 - 889 - 236

受付時間:平日 9:00-18:00