0

我非常坚持我的情况。这是我会卡住的:

我有一张桌子:

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 它将是相同的数据。

4

1 回答 1

0

您可以LEFT JOIN在查询中执行 a 并创建一个新列 -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

于 2013-04-27T03:49:43.510 回答