ソフトウェア開発をやっていると、SQLが苦手なプログラマに多く出会う。SQLはすごく柔軟で高度な処理を簡潔にかけるにも関わらず、わざわざ単純なSQLを使って大量のデータをした後、Javaなどの手続き型言語で加工するわけだ。単にアホなだけという可能性も否定しがたいけれども、SQLの組み方を学ぶ機会が少ないこともあるのかもしれない。 というわけで、割と自己流なんだけど、SQLの組み立て方を紹介してみることにする。 1.幹となるデータを取得する 残高試算表なら仕訳明細、売上推移表なら売上明細などまず幹となるデータを単に取得するSQLを作る。 幹となるデータは、予想される取得結果がサブセットになるものを選ぶ。 幹となるデータがヘッダ、明細で分かれている場合は、INNER JOIN でヘッダ⇒明細の順で繋ぐ。 やや趣味の問題だが、ON句の結合条件は、結合先 = 結合元 の順で書く。このようにしておく