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

如果 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 回答
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 回答