【发布时间】:2013-01-03 12:45:47
【问题描述】:
我有一个包含几列的表,其中一个是日期列 (data1)。
使用的mysql查询是
SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now()
然后我们从每一行获取数据,运行一些计算并将其存储为单独的变量。
我现在想将此数据与上周的数据(在同一个表中)进行比较,即通过更改 SELECT 查询。
让我展开……
从表中获取本周数据的查询:
$sqld = "SELECT * from leads WHERE data1 between date_sub(now(),INTERVAL 1 WEEK) and now()";
现在我们开始提取数据
$result = mysql_query($sqld) or die(mysql_error());
$num_rows = mysql_num_rows($result);
while($row = mysql_fetch_array($result))
{
$referred = $referred + $row['referred'];
$invalidated = $invalidated + $row['invalidated'];
$tobequalified = $tobequalified + $row['tobequalified'];
}
(以上只是我们需要运行来演示的计算的一个 sn-p)。
现在我们根据这周的数据显示结果
<h4>Totals for this week</h4>
<table class="table stat-table">
<tbody>
<tr>
<td class="value"><? echo $num_rows; ?></td>
<td class="full">Total leads</td>
</tr>
<tr>
<td class="value"><? echo $referred; ?></td>
<td class="full">Referred</td>
</tr>
<tr>
<td class="value"><? echo $invalidated; ?></td>
<td class="full">Invalidated</td>
</tr>
<tr>
<td class="value"><? echo $tobequalified; ?></td>
<td class="full">To be qualified</td>
</tr>
</tbody>
</table>
我现在想更改上面的 $sqld 查询以选择表中属于上周的行,运行上面相同的计算并显示结果下面我们可以比较两者。
<h4> Totals for last week</h4>
<table class="table stat-table">
<tbody>
<tr>
<td class="value"><? echo $num_rows; ?></td>
<td class="full">Total leads</td>
</tr>
<tr>
<td class="value"><? echo $referred; ?></td>
<td class="full">Referred</td>
</tr>
<tr>
<td class="value"><? echo $invalidated; ?></td>
<td class="full">Invalidated</td>
</tr>
<tr>
<td class="value"><? echo $tobequalified; ?></td>
<td class="full">To be qualified</td>
</tr>
</tbody>
</table>
有没有什么方法可以在不复制所有内容和更改 $sqld 查询的情况下实现这一点?
【问题讨论】:
-
你能举一个更具体的例子吗?
-
您可以使用一周前的 date_diff() 值重新连接到同一个表(假设索引允许它)。
-
这取决于你的php查询和计算代码。分离代码并将查询中的数据提取到一个数组中,然后将该数组传递给计算。