SQLで複数(3つ以上)のテーブルを結合させるのが得意になった

2つのテーブルを結合させるなら ON で簡単にできて直感的だったんだけど, 3つ以上のテーブルになると難しくて少し混乱していた。
やっている原理は2つのテーブルを結合させていると一緒とわかっていてもどうしても頭の中でごちゃごちゃになっていた。

そこで頭の中だけではなく物理的に図を書くように癖をつけた。

ちょっと雑だけどこんなかんじ↓ f:id:sakura818uuu:20180724194205j:plain

この方法だとテーブルがたとえ何個あっても落ち着いて自分が望むようなクエリが書けるようになった。

Atomで2つのファイルを見比べる時はパッケージsplit diffが便利

Atomで2つのファイルを見比べてファイルを編集したい時がある。
その時にパッケージのSplit Diffを使用すると便利だった。

Atom -> 環境設定 -> install -> Split Diffと入力 するとインストールできる。

公式サイトはこちらにある。 atom.io

以下の画像のようにSplit Diffを使うと2つのファイルのdiff部分が一目できる。

f:id:sakura818uuu:20180723202711p:plainf:id:sakura818uuu:20180723203120p:plain
<Split Diff>左が使用する前 右が使用した後

AtomBeautifyでCould not find 'sqlformat'. The program may not be installed.とエラーが出る時の解決方法

エディタAtomSQLを整形してくれるパッケージAtomBeautifyを使用すると ”Could not find 'sqlformat'. The program may not be installed.”のエラーが出た。

f:id:sakura818uuu:20180721134313p:plain
”Could not find 'sqlformat'. The program may not be installed.”のエラー内容

以下のお二方のブログを参考に解決した。

Mac/LinuxにPython開発環境一式をインストール - simon's note
atom-beautifyのSQL整形でエラー

以下に実際に入力したコマンドを記す。 pipが入っていなかったので先にpipをインストールしてから(ついでにpythonの環境も設定した)上記の赤い画像のエラー内容にもあるsqlparseをインストールした。

$ pyenv -v
-bash: pyenv: command not found
$ brew install pyenv
$ pyenv -v
pyenv 1.2.6
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile
$ source ~/.bash_profile
$ pyenv install --list
$ pyenv install 3.6.5
$ pyenv versions
* system (set by /Users/******/.pyenv/version)
  3.6.5
$ pyenv global 3.6.5
$ python --version
Python 3.6.5
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ python get-pip.py
$ pip install --upgrade pip
Requirement already up-to-date: pip in ./.pyenv/versions/3.6.5/lib/python3.6/site-packages (10.0.1)
$ pip install --upgrade sqlparse

これでエラーは解決したので Atom -> パッケージ -> Atom Beautify -> Beautify を試す。
そうすると左の画像のようにぐちゃぐちゃだったSQLが綺麗に整形されて右の画像のようになる。

f:id:sakura818uuu:20180721134809p:plainf:id:sakura818uuu:20180721134812p:plain
<Atom Beautify>左が整形する前 右が整形した後