MYSQL按日期选择上次已知的行数据

时间:2012-05-17 18:57:15

标签: php mysql database select charts

我一直在努力解决这个问题。我不确定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工作。任何想法,建议都表示赞赏。

2 个答案:

答案 0 :(得分:0)

如果Date是mysql日期字段,则第一个表只是

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

其中start_range和end_range是格式为YYYY / MM / DD的日期范围。

答案 1 :(得分: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,将它包装在一个表中,你应该有你想要的东西。