来自连接的mysql查询的多维数组

时间:2012-11-20 04:07:20

标签: php mysql multidimensional-array

所以这一直在踢我的屁股。一点点解释是我有2张桌子 - 设备和电子邮件。从本质上讲,设备保持静止并转移到项目中,然后每天跟踪它的使用情况。 equipment.eid是设备的唯一标识符,然后在每个ehours条目中使用。

以下是我用来创建输出的查询。我得到的输出正确排序,但无法弄清楚如何正确输出。

SELECT e.cid, e.eid, h.pid, h.hdate, e.eqid, e.name, e.make, e.model, h.hours, e.uid
FROM equipment e
LEFT JOIN ehours h on h.eid = e.eid
AND MONTH(h.hdate) = $data[month] AND YEAR(h.hdate) = $data[year]
ORDER BY cid ASC, eid ASC, pid ASC, hdate ASC

我遇到的问题是,在一个月内,一件设备可能在两个独立的项目上。该查询显示以下内容......

cid | eid | pid  | hdate      | eqid | name     | make        | model | hours | uid
4   | 55  | 1    | 2012-11-01 | E8   | Forklift | Clark CGP25 |       | 5     | 1
4   | 55  | 1    | 2012-11-07 | E8   | Forklift | Clark CGP25 |       | 5     | 1
4   | 55  | 1    | 2012-11-10 | E8   | Forklift | Clark CGP25 |       | 2     | 1
4   | 55  | 1    | 2012-11-13 | E8   | Forklift | Clark CGP25 |       | 3     | 1
4   | 55  | 4    | 2012-11-13 | E8   | Forklift | Clark CGP25 |       | 2     | 1

输出需要具有日期的第二维度,该日期将在该月的适当日期输出。最终显示将显示该月的所有日期。例如,第一个eid将在pid为1的一行中输出,并在该月的正确日期具有hours。然后,它将使用相同的设备,但pid为4。

所以,无论如何,我需要以某种方式将日期创建为数组的第二维,我可以在输出每一行时完成。或者可能是第三维来捕捉与每个日期相关的小时数?我已经看了几个php方法来尝试这个,但到目前为止都没有成功。任何帮助是极大的赞赏。哇 - 这变成了一部小说。

编辑:

以下是输出应该是什么......

pid | eqid | name     | make        | 11-01 | 11-02 | ... | 11-07 | ... | 11-10 | ... | 11-13
1   | E8   | Forklift | Clark CGP25 | 5     | 0     | ... | 5     | ... | 2     | ... | 3
4   | E8   | Forklift | Clark CGP25 | 0     | 0     | ... | 0     | ... | 0     | ... | 2

还必须考虑pid

的NULL值

1 个答案:

答案 0 :(得分:0)

假设我理解你的目标,你可以做的是为每个PID创建一个关联数组,其中包含每个PID的日期行:

while ($row = mysql_fetch_assoc($res))
{
  $output[$row['pid']][] = $row;
}

然后你需要检查新数组

foreach ($output as $job)
{
  foreach ($job as $line)
  {
    // do some formatiign here
    print_r($line)
  }
  echo "<hr>"; // this is the line or whatever seperator you need
}

希望这有助于:)