我使用嵌套組嘗試過了,他們變得非常困難多樹和許多其他併發症的處理時保持..我想給PHP的SPL圖書館刺了這個(順便說一下,我們是PHP 5.3,MySQL 5.1)。如何聚合使用PHP的SPL
給出兩個數據集:
的羣組:
+-------+--------+---------------------+---------------+
| id | parent | Category Name | child_key |
+-------+--------+---------------------+---------------+
| 11133 | 7707 | Really Cool Products| 47054 |
| 7709 | 7708 | 24" Monitors | 57910 |
| 7713 | 7710 | Hot Tubs | 35585 |
| 7716 | 7710 | Hot Dogs | 00395 |
| 11133 | 7707 | Really Cool Products| 66647 |
| 7715 | 7710 | Suction Cups | 08396 |
+-------+--------+---------------------+---------------+
該項目
+------------+------------+-----------+----------+---------+
| child_key | totalprice | totalcost | totalqty | onorder | (jan, feb, mar..)
+------------+------------+-----------+----------+---------+
| 24171 | 10.50 | 20.10 | 200 | 100 |
| 35685 | 10.50 | 20.10 | 200 | 100 |
| 76505 | 10.50 | 20.10 | 200 | 100 |
| 04365 | 10.50 | 20.10 | 200 | 100 |
| 01975 | 10.50 | 20.10 | 200 | 100 |
| 12150 | 10.50 | 20.10 | 200 | 100 |
| 40060 | 10.50 | 20.10 | 200 | 100 |
| 08396 | 10.50 | 20.10 | 200 | 100 |
+------------+------------+-----------+----------+---------+
這些數字實際上比這複雜得多(其實我彙總一過去15年可變的月數或年數,因此可能需要成爲20列彙總結果)。
編輯: @Gordon我想有許多方法去獲得結果集..理想的情況下,我想RecursiveIterator東西給我的東西,我可以吐到一個視圖,將擁有所有的業務邏輯已經完成(葉節點的聚合等)..所以結果看起來就會像這樣(請注意,在鄰接表深度爲任意):
+------------+------------+-----------+----------+---------+
| Name | totalprice | totalcost | totalqty | onorder | (jan, feb, mar..)
+------------+------------+-----------+----------+---------+
| Monitors | 36.00 | 60.40 | 800 | 400 | (category)
| --24" | 22.00 | 40.20 | 400 | 200 | (category)
| ---04365 | 10.50 | 20.10 | 200 | 100 | (item)
| ---04366 | 11.50 | 20.10 | 200 | 100 | (item)
| --22" | 1.50 | 10.10 | 200 | 100 | (category)
| ---04365 | 1.50 | 10.10 | 200 | 100 | (item)
| -| 12.50 | 10.10 | 200 | 100 | (item)
+------------+------------+-----------+----------+---------+
:編輯完
我一直在想圖o ut RecursiveIterator和IteratorAggregate,但我很難找到真實世界的示例,這些示例足夠通用,可以真正包裹這些類。
有人可以給我一個良好的開端?
編輯:這裏不需要
一個非常詳細的解決方案。它只是似乎不清楚在哪裏(如果有的話)我可能會使用迭代器,RecursiveIterator,RecursiveIteratorIterator等拿出一個乾淨,可擴展的解決方案來聚合分層數據。
:編輯完
*(相關)* http://www.phpro.org/tutorials/Introduction-to-SPL.html – Gordon 2010-04-16 14:43:40
*(建議)*您可能要添加一個例子的ResultSet的clearity。 – Gordon 2010-04-16 14:45:59
@戈登感謝您的迴應,我添加了一個理想的結果集。 – 2010-04-16 15:21:47