2012-11-20 77 views
0

所以這一直踢我的屁股。一個小解釋是我有兩張桌子 - 設備和ehours。本質上,設備保持靜態並轉移到項目中,然後每天根據使用情況進行跟蹤。 equipment.eid是設備的唯一標識符,然後在每個ehours條目中使用。來自加入的mysql查詢的多維數組

以下是我用來創建我的輸出的查詢。我得到的輸出正確排序,但無法弄清楚如何正確輸出。

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將在一行中輸出,其中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 

也不得不考慮一個NULL值pid

+0

所以是你想輸出究竟你收到你只是希望有2012-2015之間的線11-13 pid 1和2012-11-13 pid 4? –

+0

是的 - 僅供參考。我正在考慮一個電子表格。第一行將包含項目,然後是設備信息,然後是所選月份和年份的所有日期,然後在每個月份的每一天都是適當的時間。下一行將具有相同的設備,但是下一個PID將在正確的日期記錄下適當的小時。如果每件設備只有一個日期,那很簡單。 – hatchet145

回答

0

假設我明白你是什麼之後,你可以做的是爲每個包含每個日期行的每個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 
} 

希望這有助於:)

+0

我在上面添加了一些額外的信息來顯示輸出應該是什麼樣子。我會看看我能否得到你今天說的工作。謝謝。 – hatchet145