phpbar.de logo

Mailinglisten-Archive

[php] SQL-Abfrage, Baumdarstellung, Verknüpfungen , Vereinfachung

[php] SQL-Abfrage, Baumdarstellung, Verknüpfungen , Vereinfachung

Lutz Zetzsche Lutz.Zetzsche at sea-rescue.de
Don Sep 20 17:32:45 CEST 2007


Hallo Dennis,

Am Donnerstag, 20. September 2007 schrieb Dennis Dohle:
> ich versuche gerade, unser CRM-System zu optimieren und bin dabei auf
> eine Sache gestoßen, die mich noch etwas nervt. Wir haben im System
> einen Bereich, in dem wir Vorgänge wie Anrufe, Faxe, E-Mail zu einer
> Person speichern. Beim Anlegen eines Vorgangs kann ich eine
> Verknüpfung zu einem schon bestehenden Vorgang auswählen. Eine
> Beispielvorgangsliste könnte dann so aussehen:
>
> Vorgang 1 (ID 1)
> ----- Vorgang 2 (ID 2)
> ----- Vorgang 3 (ID 3)
> ------------- Vorgang (ID 4)
> ----- Vorgang (ID 5)
> Vorgang (ID 6)
> Vorgang (ID 7)
> Vorgang (ID 8)
> ----- Vorgang (ID 9)
> ...
>
> Hierzu gibt es eine separate Verknüpfungstabelle mit zwei Feldern in
> der Datenbank.
>
> Feld 1: parent
> Feld 2: child
>
> Mit den IDs im Beispiel oben wäre das z.B. dann:
>
> 1 , 2
> 1 , 3
> 3 , 4
> 1 , 5
> ...
>
> So, jetzt kommt das Performance-Problem. Ich lesen im Grunde jede
> "Ebene" für sich aus, überprüfe dann die Einträge auf Untereinträge
> und lese diese wiederum aus. So habe ich im Beispiel oben 9 Einträge,
> also auch 9 SELECT-Anweisungen. Finde ich irgendwie nicht schön.
>
> Hat da jemand vielleicht eine Idee zu?

Du könntest zusätzlich in der Verknüpfungstabelle den Hierachiepfad 
pflegen. Das könnte z.B. so aussehen:

1, 2, 00010002
1, 3, 00010003
3, 4, 000100030004
1, 5, 00010005

Wenn Du dann alle Untervorgänge suchst, kannst Du mit 
LIKE '<Hierarchiepfad>%' suchen. Dieser Ansatz macht allerdings nur 
Sinn, wenn die Hierarchietiefe nicht zu groß wird. Sonst wird die 
Zeichenkette etwas lang.


Viele Grüße
Lutz

php::bar PHP Wiki   -   Listenarchive