情弱エンジニアのなかのblog

一人前のエンジニアになる為のブログです

MySQLでデータの結合と月ごとのデータの出力

MySQLでサブクエリやDATE_FORMATを使用したので、 手順書等を記載いたします。

1.月毎にデータを出力する

データを月毎の結果で出力したい場合は DATE_FORMTというものを使います。

使い方としましては

SELECT
    DATE_FORMAT(fuga_time, '%Y-%m'),
    COUNT(*)
FROM
    hoges
GROUP BY
    DATE_FORMAT(fuga_time, '%Y%m');

といった形式で使用します。 例えば期間を指定すると、その期間で結果が表示されます。

SELECT
    DATE_FORMAT(fuga_time, '%Y-%m'),count(*)
FROM
    hoges
WHERE
    fuga_time between '2016-01-01' and '2016-12-31'
GROUP BY
    DATE_FORMAT(fuga_time, '%Y-%m')

こちらですと2016年1月から12月のデータが月毎で表示されます。

2.条件指定したテーブルを結合する

続いてはテーブルをWHEREで検索したものを他のテーブルに結合する手順を紹介いたします。 まずは単純にテーブルで検索を行います。

SELECT
    id
FROM
    customers
WHERE
    birthday between '1970-01-01' and '1999-12-31'

こちらの検索結果のテーブル情報を他のテーブルに結合したいときは サブクエリを使用します。

SELECT
    c.name , count(*) , sum(orders.price)
FROM
    orders
INNER JOIN
( SELECT
    id
FROM
    customers
WHERE
    birthday between '1970-01-01' and '1999-12-31') AS c
ON
    orders.customer_id = c.id

このようにすることでまとまったデータを他のテーブルに結合することが出来ます。

それでは