表格逻辑中的显示数据卡住了

时间:2013-04-27 03:05:06

标签: php mysql

我很困惑我的情况。以下是我要解决的问题:

我有一张桌子:

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状态,那将是相同的数据。

1 个答案:

答案 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修改日期