これをより説明的なタイトルにするのは難しいです。私は今それに数時間を費やしましたが、誰かに尋ねるのが最善だと思いました!
私はこのように見える3つのテーブルを持っています
場所:
id | name
1 | Plymouth
2 | Torquay
etc
販売記録
itemId | saleDate (unix) | qty | saleLocation |
123 | UNIXTIMESTAMP | 1 | 1 |
458 | UNIXTIMESTAMP | 4 | 2 |
215 | UNIXTIMESTAMP | 2 | 2 |
541 | UNIXTIMESTAMP | 1 | 1 |
製品
itemId | brand |
123 | 1 | etc
明らかに、各テーブルには実際にはそれよりも多くのデータが含まれていますが、必要なのはそれだけです。
私が必要としているのは、特定の場所で販売された各アイテムまたはアイテムのグループの数を教えてくれる出力です。次のようなものが必要です。
出力
mnth | yr | location1Sales | location2Sales
10 | 2006 | 14 | 7
11 | 2006 | 13 | 12
12 | 2006 | 8 | 1 ... etc
昨日ここに投稿した質問:
1 つのテーブルから ID のリストを取得して 2 番目のテーブルを照会する MySQL サブクエリ
親切に回答され、TOTAL
すべての場所での合計売上高を取得するためのかなり効率的なクエリが提供されました (昨日の質問に投稿されたクエリに関連する場所データはまったくありません)。
もちろん、追加の句を に追加してWHERE
、1 つの場所のデータのみを取得することもできますが、それらすべてを 1 つのテーブルにまとめたいと思います。
今日、場所をクエリに追加するためにいくつかのグループ化/WHERE句を追加しようとしていますが、上記の形式のテーブルを作成する方法について頭を悩ませることができません.
位置データの出力を行で取得することはできますが、上記のように列形式で必要です
SELECT DAY( FROM_UNIXTIME( saleDate ) ) AS
DAY , MONTH( FROM_UNIXTIME( saleDate ) ) AS mnth,
YEAR( FROM_UNIXTIME( saleDate ) ) AS yr,
COUNT( s.id ) AS invCount, locations.name,
s.location, SUM( quantity ) AS saleQty
FROM salesRecords s
LEFT JOIN locations ON locations.id = s.location
INNER JOIN products ON s.itemNo = products.id
WHERE products.brand = '313' <=== X
AND s.location LIKE '1\_%' <=== XX
GROUP BY `locations`.`name` , mnth, yr
X: ブランド ID は、商品をブランド別にグループ化するために必要な変数です
"locationId_tilId"
XX:販売は til で追跡されるため、saleLocation はフォームの dB で保持されるため、場所はこのように照会されます。
このデータを取得して Javascript 配列に変換しようとしているので、素晴らしい amCharts プラグインを使用してグラフを作成できます。