所以这让我有点恼火。稍微解释一下,我有 2 张桌子 - 设备和 ehours。本质上,设备保持静态并转移到项目中,然后每天跟踪其使用情况。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
我遇到的问题是,在给定的一个月内,一台设备可能在 2 个单独的项目中。查询显示以下...
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
将在 1 的一行上输出,pid
并且hours
在该月的正确日期具有 。然后它会在之后有一条线,使用相同的设备,但 apid
为 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
还必须考虑 NULL 值pid