2018.03.02 Fri

DBの操作をしたいけどSQLがわからない…そんな方へのSQL講座!-その2-


みなさん、こんにちは!
ジーニアスウェブの中武です。

先月までは大寒波到来などというニュースが流れていたりしておりましたが、
最近は段々暖かくなり、過ごしやすくなりましたね!

さて、前回に引き続き今回もデータベース対話言語、SQLについてお話しさせて頂きたいと思います。

今回は主に様々なデータ取得方法についてお話ししていきます。

データのグループ化 (GROUP BY)


データによって、グループごとに集計(グループ化)を行いたい場合にはGROUP BY句を使用します。

name列でグループ化し、quantityの合計を表示させてみたものがこちらになります。

実行結果をみていただくとわかりますが、「りんご」と「みかん」は2つあったデータがまとまって合計値が表示されているかと思います。

データの並び替え (ORDER BY)


データの並び替えがしたい場合にはORDER BY句を使用します。

quantity列の昇順に並び替えてみたものがこちらになります。

デフォルトが昇順のため、降順にしたい場合はORDER BY 列名 DESCとすればOKです。

ここまでデータ取得でいくつか方法をご説明させて頂きましたが、各句の順番も決まっておりますので、ここで整理したいと思います。
それぞれの句の記述順はこのようになっております。しっかり覚えておきましょう!

複数テーブルからデータ取得


基本的なデータの取得に関することについて説明してきましたので、複数テーブルからの取得についても説明していきたいと思います。

※今回はカートフルーツのテーブルを用意しました。それぞれのテーブルの内容はこのようになっております。

両方のデータを取得するから、FROM句に各テーブルを指定して…というように行なってみたのが下の図になります。

あれ?なんだか結果がすごく多い…と感じるのではないでしょうか?
これは直積やクロス結合と呼ばれ、先に書かれたカートテーブルを元にフルーツテーブルの全てを取得してしまうため、「カートテーブル1データ×フルーツテーブルの全部のデータ」という結果になってしまいます。

各テーブル1データずつにしたい場合は、UNIONを使用してこのようにします。

cartテーブルを見て既にお気付きかもしれませんが、fruit_idという列があるかと思います。
これは、このcartデータにはどのfruitデータが紐づいているということを指定した列になります。実際に紐づいたデータを取得したのがこちらです。


もう少しカートテーブルっぽく、Aさんのカートのみを取得して見たのがこちらになります。

最後に


GROUP BY句やORDER BY句、複数テーブルのデータ取得など少し理解頂けましたでしょうか?
次回その3では、1・2の内容をもう少し掘り下げていきたいと思います!

WRITERこの記事を書いた人

中武

中武

webのシステム開発などを行なっております。よろしくお願い致します。

webのシステム開発などを行なっております。よろしくお願い致します。

CATEGORY

Genius Web in Japan コーポレートサイト

FREE DOWNLOAD

顧客獲得に成功した24社の成功事例を1冊にまとめました。
顧客獲得にお困りの方も、そうでない方も、一度お読みいただくことをお勧めします。

MORE VIEW

CATEGORY