MySQLで売り上げ集計表を取得するクエリについて質問です。
テーブル構成は次の通りです。
★顧客テーブル
顧客ID
顧客名
(その他カラム省略)
★注文テーブル
注文no(ナンバー)
顧客ID
注文区分(1=ネット受注、2=電話受注)
注文日
(その他カラム省略)
★注文詳細テーブル
注文詳細no
注文no
商品ID
数量
★商品テーブル
商品ID
商品名
価格
このようなテーブル構成で、
「特定の日付の顧客一覧および商品の売り上げ数量一覧」
の表を取得したいと考えています。
その日の注文が無い客も含めて、一覧表で取得したいです。
たとえば、今日の売り上げが知りたいとき、どういうクエリを書くべきでしょうか。
以下のようなクエリを使うと、
SELECT a.顧客ID
, a.顧客名
,
b.注文no
, b.注文区分
,
c.注文詳細no
, c.数量
,
d.商品名
, d.価格
FROM 顧客テーブル
AS a
LEFT JOIN 注文テーブル
AS b ON b.顧客ID
= a.顧客ID
AND b.注文日
= '2015-02-10'
LEFT JOIN 注文詳細テーブル
AS c ON c.注文no
= b.注文_no
LEFT JOIN 商品テーブル
AS d ON d.商品ID
= c.商品ID
次のような結果が得られます。
顧客ID 顧客名 注文no 注文区分 注文詳細no 数量 商品名 価格
001 海山商事 1 1 1 3 ドライバー 500
002 会社あ NULL NULL NULL NULL NULL NULL NULL
003 会社い NULL NULL NULL NULL NULL NULL NULL
004 三角運送 2 1 2 1 スパナ 300
004 三角運送 2 1 3 1 ドライバー 500
004 三角運送 3 2 4 1 スパナ 300
005 会社う NULL NULL NULL NULL NULL NULL NULL
006 会社え NULL NULL NULL NULL NULL NULL NULL
このとき、三角運送はネット注文と電話注文で、それぞれスパナを1本ずつ注文しているため、
このように行が分かれています。
最終的には以下のような表としてHTML出力したいのですが、
SQL一発では無理でしょうか?
SQLまたはPHPでどのように加工したら望みの結果が得られますでしょうか。
顧客ID 顧客名 注文日 ドライバー スパナ 合計金額
001 海山商事 2015-02-10 3 0 1500
002 会社あ NULL NULL NULL NULL
003 会社い NULL NULL NULL NULL
004 三角運送 2015-02-10 1 2 1100
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/11 12:22
2015/02/11 13:02
2015/02/11 13:09