0

私はしばらくこれと格闘してきました。MYSQL クエリがこれを行うための最良の方法であるかどうかはわかりませんが、途方に暮れています。

特定の日付に特定の人のエントリがありますが、常に同じ日付になるとは限りません。例えば:

Person     Date        Product
Mike     2012/12/1      Pants
Chris    2012/12/4      Shoes
Mike     2012/12/4      Pants
Julian   2012/12/5      Hat

このテーブルをトレンド レポートに使用しており、日付範囲を選択する必要があります (例: 2012/12/2 - 2012/12/10)。特定の日に何パーセントが着用されているかを確認できるように、各人が毎日何を着用していたかを示す表が必要です。出力テーブルは次のようになります。

Person     Date        Product
Mike     2012/12/1      Pants
Mike     2012/12/2      Pants
Mike     2012/12/3      Pants
Chris    2012/12/4      Shoes
Mike     2012/12/4      Shoes
Julian   2012/12/5      Hat
Mike     2012/12/5      Shoes
Chris    2012/12/5      Shoes
Julian   2012/12/6      Hat
Mike     2012/12/6      Shoes
Chris    2012/12/6      Shoes
Julian   2012/12/7      Hat
Mike     2012/12/7      Shoes
Chris    2012/12/7      Shoes

など....日付範囲によって異なります。理想的には、次のようなテーブルがさらに優れています。

  Date         Product   Worn    Total
2012/12/1      Pants      1        1
2012/12/1      Shoes      0        1
2012/12/1      Hat        0        1
2012/12/2      Pants      1        1
2012/12/2      Shoes      0        1
2012/12/2      Hat        0        1
2012/12/3      Pants      1        1
2012/12/3      Shoes      0        1
2012/12/3      Hat        0        1
2012/12/4      Pants      0        2
2012/12/4      Shoes      2        2
2012/12/4      Hat        0        2
2012/12/4      Pants      0        3
2012/12/4      Shoes      2        3
2012/12/4      Hat        1        3

現在、MySql DB を使用して PHP で作業しています。ご意見、ご提案をお待ちしております。

4

2 に答える 2

0

主に擬似コード:

for(EACH day in date range){
 $query = SELECT COUNT(product) from table WHERE date="day" AND product = "hat";
 $getResults=mysql_query($query) or die(mysql_error());
 while($row = mysql_fetch_array($getResults))
 {
  $inventory_count = $row['COUNT(product)'];

 }
 echo 'Date'. $date.' - 'Product: hat - total = '. $inventory_count;
 $query = SELECT COUNT(product) from table WHERE date="day" AND product = "pants";

 $getResults=mysql_query($query) or die(mysql_error());
 while($row = mysql_fetch_array($getResults))
 {
  $inventory_count = $row['COUNT(product)'];

 }
  echo 'Date'. $date.' - 'Product: pants' - 'total = '. $inventory_count;
 $query = SELECT COUNT(product) from table WHERE date="day" AND product = "shoes";

 $getResults=mysql_query($query) or die(mysql_error());
 while($row = mysql_fetch_array($getResults))
 {
  $inventory_count = $row['COUNT(product)'];

 } 
 echo 'Date'. $date.' - 'Product: shoes' - 'total = '. $inventory_count;
}

これはおそらく最も効率的な方法ではありませんが、必要なデータを取得できるはずです。いくつかのTRとTDを入れて、それをテーブルにラップすると、探しているものが得られるはずです。

于 2012-05-17T20:20:26.563 に答える
0

Date が mysql の日付フィールドの場合、最初のテーブルは次のようになります。

SELECT * FROM table WHERE Date > start_range AND Date < end_range

ここで、start_range と end_range は、YYYY/MM/DD 形式の日付範囲です。

于 2012-05-17T20:04:41.183 に答える