我很困惑我的情况。以下是我要解决的问题:
我有一张桌子:
form_no | model_name | status | date_check
现在我有一个数据:
1 | mouse | OK | 26-Apr-2013
2 | mouse | NG | 27-Apr-2013
现在我想使用PHP代码在我的页面中显示它。我们看到model_name具有相同的名称,但具有不同的status和date_check。
我想要做的是,如何在不循环数据的情况下将其作为1个信息。所以数据将在我的页面中显示如下:
No | Model Name | Status Yesterday | Status Today
1 | mouse | OK | NG
-
<table>
<td>No</td><td>Model Name</td><td>Status Yesterday</td><td>Status Today</td>
<tr>
<?php
$query = "SELECT * FROM t_prod";
$result = mysql_query($query);
while ($data = mysql_fetch_array($result))
{
$model_name = $data['model_name'];
?>
<td>1</td><td><?php echo $model_name; ?></td><td>Status yesterday</td><td>Status Today</td>
<?php
}
?>
</table>
我们在昨天的状态栏中看到,今日状态仍然没有PHP代码,因此我很困惑如何根据昨天和今天进行展示。
上次我这样做是这样的:
我添加
$status_yesterday = $data['status'];
$status_today = ?
但它只是昨天,如果我昨天添加status_today状态,那将是相同的数据。
答案 0 :(得分:0)
您可以在查询中执行LEFT JOIN
,并创建新列 - status_yesterday
SELECT
t.form_no, t.model_name, t.status as status_today, y.status_yesterday
FROM
t_prod t
LEFT JOIN
(SELECT model_name, status AS status_yesterday FROM t_prod WHERE date_check = '2013-04-26') y
ON t.model_name = y.model_name
WHERE date_check = '2013-04-27'
GROUP BY model_name
看一个SQLFiddle。 http://sqlfiddle.com/#!2/e2de8/3
注意我已在查询中对日期进行了硬编码,但您可以使用NOW()
和NOW() - INTERVAL 1 DAY
修改日期