2

我有一个名为“项目”的表

id       month       year       **itemname**       distmoney
 1        12         2012         chicken           20
 2        12         2012         pork              15
 3        11         2012         chicken           21
 4        11         2012         pork              15

我试图找出两个月之间相同项目名称的“distmoney”之间的区别,仅适用于一个特定项目(通过使用 WHERE id = $id)

例子:

ID 1,物品名称 chicken。第 12 个月的 distmoney 是 20,而第 11 个月的 distmoney 是 21。我希望能够计算 id=1、itemname=chicken 的差值 1。它应该只显示鸡肉的区别,而不是任何其他项目名称(如猪肉)。

现在我有 php 代码来计算两个数字之间的差异,但我很难弄清楚如何抓住上个月的 distmoney。

能够找到特定项目名称的上个月的 distmoney 并将其插入到名为“oldmoney”的新列中也可以,但我不确定如何执行此操作。

示例:对于 id 3,itemname chicken。当前的 distmoney 是 20,上个月(在 id = 1 中找到)是 20。让我们取 20 并将其插入到 id 3 下的新列中。

<?php
foreach($rows as $row):
 $number1 = htmlentities($row['distmoney'])
endforeach;

$number1 = $row['distmoney'];
$number2 = ????????; // THIS NEEDS TO BE THE PREVIOUS MONTH DISTMONEY VALUE
if ($number1 <= $number2) {
    $difference = "(Price Lowered) Price difference of $";
    $result = $number2 - $number1;
    $percent = round(100.0*($number2-$number1)/$number1);
    echo $difference; echo $result; echo $percent; echo "%";
} elseif ($number1 > $number2) {
    $result = $number1 - $number2;
    $percent = round(100.0*($number2/$number1-1));
    $addition = "(Price Higher) Price difference of $";
    echo $addition; echo $result; echo $percent; echo "%";
} 

?>

4

1 回答 1

1

当您查询项目时,首先按项目名称排序

然后,做一些事情,比如

//Create a variable to hold the "previous month" values
$previousItemName = '';
$previousDistMoney = '';

//Check each record from your query
foreach($rows as $row) {

   //If not first time around && same item name as previous
   if($previousItemName != '' && $previousItemName == $row['itemname']) {

      //subtraction calculation here
      //$difference = $row['distmoney'] - $previousDistMoney;  ??
      //echo $difference;  ??
   }

   //Assign the "previous month" value
   $previousItemName = $row['itemname'];
   $previousDistMoney = $row['distmoney'];
}

尽管这两种方式都有些脏,但您也可以选择循环: for($i =0; $i < count($results); $i++) { }

然后检查 $results[$i-1]['distmoney']; 的值


编辑。

如果您知道查询字符串中的 ID,只需将其放入您的查询中……这样就只返回 2 条“鸡”记录:

select  itemname, distmoney from items where itemname in (
   select itemname from items where id = 3
)
于 2013-01-15T20:29:11.710 回答