Hallo,
ich habe wieder ein Problem, bei dem ich nicht weiterkomme.
Es gibt eine als Nested set ausgelegte Tabelle mit Warengruppen (Unterwarengruppen etc.), eine Tabelle mit Artikeln und eine Zwischentabelle für die Verknüpfung der Artikel mit den Warengruppen.
Ist es nun möglich, mit einer Abfrage die Warengruppen inkl. der dazugehörigen Artikel als ihre "Kinder" auszugeben?
Mein Problem besteht darin, dass bei der Abfrage der Warengruppen ja mit GROUP BY gearbeitet wird. Folglich wird einer jeweiligen Warengruppe nur ein Artikel zugeordnet, nicht alle. Lässt sich das anders lösen?
Mir ist klar, dass ich einmal den Baum der Warengruppen und einmal die Artikelzuordnungen auslesen und anschließend ein gesamtes Array erstellen könnte. Mich interessiert aber, ob es auch nur mit SQL möglich ist. Ich finde leider keinen sinnvollen Ansatz.
Struktur:
tbl_wgruppen: id, lft, rgt, name
tbl_artikel: id, name
tbl_zuordnung: id, artikel_id, wgruppen_id
Angenommen, der Baum sieht so aus:
und die Artikel so:
blume1 (gehört blumen-rosa,blumen-orange-klein)
blume2 (gehört blumen-rot,blumen-orange-groß)
Dann müsste das Ergebnis so aussehen:
Dadurch, dass die Abfrage des Baumes nun (grob) so aussieht:
ergibt sich eben das Problem, dass beim Einbeziehen der Artikel und Artikelzuordnungen in die Abfrage einer Warengruppe (höchstens) nur ein Artikel zugeordnet wird; eben durch die Gruppierung.
Hat sich schon jemand mal mit so einer Problemstellung befasst und weiß Abhilfe? Wie gesagt, es ist kein wichtiges Problem, sondern reines Interesse.
ich habe wieder ein Problem, bei dem ich nicht weiterkomme.
Es gibt eine als Nested set ausgelegte Tabelle mit Warengruppen (Unterwarengruppen etc.), eine Tabelle mit Artikeln und eine Zwischentabelle für die Verknüpfung der Artikel mit den Warengruppen.
Ist es nun möglich, mit einer Abfrage die Warengruppen inkl. der dazugehörigen Artikel als ihre "Kinder" auszugeben?
Mein Problem besteht darin, dass bei der Abfrage der Warengruppen ja mit GROUP BY gearbeitet wird. Folglich wird einer jeweiligen Warengruppe nur ein Artikel zugeordnet, nicht alle. Lässt sich das anders lösen?
Mir ist klar, dass ich einmal den Baum der Warengruppen und einmal die Artikelzuordnungen auslesen und anschließend ein gesamtes Array erstellen könnte. Mich interessiert aber, ob es auch nur mit SQL möglich ist. Ich finde leider keinen sinnvollen Ansatz.
Struktur:
tbl_wgruppen: id, lft, rgt, name
tbl_artikel: id, name
tbl_zuordnung: id, artikel_id, wgruppen_id
Angenommen, der Baum sieht so aus:
Code:
hosen |- lila |- blau |- gelb blumen |- rosa |- orange |- groß |- klein |- rot
blume1 (gehört blumen-rosa,blumen-orange-klein)
blume2 (gehört blumen-rot,blumen-orange-groß)
Dann müsste das Ergebnis so aussehen:
Code:
hosen |- lila |- blau |- gelb blumen |- rosa |- blume1 |- orange |- groß |- blume2 |- klein |- blume1 |- rot |- blume2
Code:
SELECT wg2.*, COUNT(*) AS lev, ... FROM tbl_wgruppen wg1, tbl_wgruppen AS wg2 WHERE wg2.lft BETWEEN wg1.lft AND wg1.rgt GROUP BY wg2.lft
Hat sich schon jemand mal mit so einer Problemstellung befasst und weiß Abhilfe? Wie gesagt, es ist kein wichtiges Problem, sondern reines Interesse.
Kommentar