0

これをより説明的なタイトルにするのは難しいです。私は今それに数時間を費やしましたが、誰かに尋ねるのが最善だと思いました!

私はこのように見える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 プラグインを使用してグラフを作成できます。

4

1 に答える 1

0
select
      year( FROM_UNIXTIME( saleDate )) as yr,
      month( FROM_UNIXTIME( saleDate )) as mnth,
      sum( if( saleLocation = 1, qty, 0 )) as Location1Sales,
      sum( if( saleLocation = 2, qty, 0 )) as Location1Sales
   from
      salesRecords
   group by
      year( FROM_UNIXTIME( saleDate )),
      month( FROM_UNIXTIME( saleDate ))

より多くの販売場所がある場合は、それらを SUM( IF() ) 構造に追加するだけです...

于 2013-02-08T01:54:14.667 に答える