.. Ben PHP'nin SPL kütüphanesi bu bir bıçak (btw, biz PHP 5.3, MySQL 5.1 'vermek istiyorum iç içe setlerini kullanarak denedim, ve birden ağaçlar ve diğer komplikasyonlar sürü ile uğraşırken korumak için çok zor hale .)
Verilen iki veri seti:
The Groups:
+-------+--------+---------------------+---------------+
| 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 |
+-------+--------+---------------------+---------------+
The Items
+------------+------------+-----------+----------+---------+
| 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 |
+------------+------------+-----------+----------+---------+
Rakamlar (aslında son 15 yrs üzerinde ay veya yıl bir değişken miktarda toplayarak duyuyorum, bu yüzden toplu sonuçlar 20 sütun olması gerekebilir) aslında çok daha karmaşık bu daha vardır.
EDIT: Gordon @ ben .. İdeal olarak, ben bana bütün olurdu bir görünüm içine tükürmek bir şey vermek için RecursiveIterator şeyler istiyorum resultset alma hakkında gitmek için yollar vardır herhalde iş mantığı (yaprak düğümlerin toplama, vb) .. zaten bitmiş yüzden sonuç böyle bir şey (bir komşuluk listesinde derinliği keyfi olduğunu unutmayın) görünecektir:
+------------+------------+-----------+----------+---------+
| 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)
| -01234 | 12.50 | 10.10 | 200 | 100 | (item)
+------------+------------+-----------+----------+---------+
:END EDIT
I RecursiveIterator ve IteratorAggregate anlamaya çalışıyorlar, ama ben zor bir zaman gerçekten bu sınıfların etrafında başımı sarmak için yeterince genel olan gerçek dünya örnekleri bulma yaşıyorum.
Birisi bana bir başlangıç verebilir misiniz?
EDIT:
Oldukça ayrıntılı bir çözüm burada gerekli değildir .. Bu, sadece belirsiz görünüyor nerede (hiç değilse) ben hiyerarşik verileri toplamak için temiz, ölçeklenebilir bir çözüm ile gelip yineleyici, vb RecursiveIterator, RecursiveIteratorIterator, kullanmak olabilir.
:END EDIT