1

できるだけ少ないデータベース クエリから希望する方法で結果を表示するための最良の方法について、少し助けを求めています。

クエリ結果列の 1 つを別のテーブルの新しい一意の列として使用し、データのようにマージしたいと考えています。

例えば

このクエリを実行します..

SELECT pd.production_date,pd.production_time,pd.production_net,
      p.part_number, w.worker_name
      FROM production as pd
      INNER JOIN parts as p
      ON pd.product_id = p.part_id
      INNER JOIN locations as l
      ON pd.location_id = l.location_id
      INNER JOIN workers as w
      ON pd.worker_id = w.worker_id
      WHERE pd.production_date BETWEEN '$from' AND '$to'
      AND p.part_number='$part_number'
      ORDER BY pd.production_date

そして、次のような結果が得られます。

production_date--production_time--production_net--worker_name
2013-01-10--390--96--MMahe
2013-01-10--400--101--RMaloney
2013-01-11--460--96--JBurris
2013-01-11--210--43--MMahe
2013-01-14--285--48--LTaylor
2013-01-16--60--8--MRocquemore
2013-01-16--460--90--TUsher
2013-01-17--450--85--MRocquemore
2013-01-17--460--84--TUsher
2013-01-18--450--73--MRocquemore
2013-01-18--460--93--TUsher
2013-01-18--240--24--JBurris

次に、これらの結果を次のような Web ページに表示したいと思います。

Operators|01-10-2013|01-11-2013|01-14-2013|01-16-2013|01-17-2013|01-18-2013

MMahe|96|43|x|x|x|x

RMaloney|101|x|x|x|x|x

JBurris|x|96|x|x|x|24

LTaylor|x|x|48|x|x|x

MRocquemore|x|x|x|8|85|73

TUsher|x|x|x|90|84|93

私の考えは、最初に日を一意の値にフィルターしてから、それらを列として吐き出す必要があるということでした。これはこれで達成しました

  $query=mysql_query($sql);
  $days = array();
  $results.='<div><table border="0"><th>Operator</th>';
  while($row=mysql_fetch_array($query)) {
      array_push($days,$row['production_date']);
  }
      $days=array_unique($days);
      $column_count=count($days);
      $n=0;
      //create the columns (days) by looping through unique days
      foreach($days as $value) {
          $results.='<th>'.$value.'</th>';
      }//end foreach

しかし、適切なセルに値をリストする方法がわかりません。この種のデータ操作の経験はありますか、または良い例を教えてもらえますか?

4

0 に答える 0