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

クエリでaLEFT 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

于 2013-04-27T03:49:43.510 に答える