Hilfe bei mysql-Abfrage
Adler87
- datenbank
Hallo,
zuerst will ich mich erstmal für den nichtssagenden Betreff entschuldigen. Ich wusste auf Anhieb kein Besseren.
Zum meinem Problem:
Ich ordne Artikel in verschiedene Gruppen ein, diese Gruppen befinden sich wieder in anderen Gruppen usw.
Konkret sieht das so aus:
Maingroup
-Subgroup
--Article_Group
---Article
---Article
--Article_Group
---Article
-Subgroup
--Article_Group
---Article
Maingroup
-Subgroup
--Article_Group
---Article
In der mySQL-DB hab ich dafür 2 Tabellen erstellt
Groups
Articles
Jetzt will ich per Abfrage alle Maingroups, die mindestens einmal den kompletten Aufbau (Subgroup->Article_Group->Article) beinhalten, holen.
Ich bin für jede Hilfe dankbar.
Gruß
Adler
zuerst will ich mich erstmal für den nichtssagenden Betreff entschuldigen. Ich wusste auf Anhieb kein Besseren.
Wenigstens hast du das DBMS genannt :) ich bin so frei und ändere den Betreff damit du ggf. danach auch in einer Suchmaschine suchen kannst.
Jetzt will ich per Abfrage alle Maingroups, die mindestens einmal den kompletten Aufbau (Subgroup->Article_Group->Article) beinhalten, holen.
Was du suchst, nennt sich Nested Set - dabei möchtest du ggf. nohcmal dein Datenbankdesign überdenken. So wie ich dich verstehe brauchst du g_type zb garnicht da sich die Einordnung ja aus der Tiefe der Verschachtelung ergibt. Alles was keine Elterngruppe hat ist automatisch eine Hauptgruppe, alles zwischendrin eine Subgruppe und alle Gruppen die einen Artikel als Kind haben sind eine Artikelgruppe.
MySQL hält hierzu sogar einen Artikel bereit:
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Was du suchst, nennt sich Nested Set - dabei möchtest du ggf. nohcmal dein Datenbankdesign überdenken. So wie ich dich verstehe brauchst du g_type zb garnicht da sich die Einordnung ja aus der Tiefe der Verschachtelung ergibt. Alles was keine Elterngruppe hat ist automatisch eine Hauptgruppe, alles zwischendrin eine Subgruppe und alle Gruppen die einen Artikel als Kind haben sind eine Artikelgruppe.
MySQL hält hierzu sogar einen Artikel bereit:
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Deine Nachricht hat bei mir Freude, aber auch ein wenig Magenschmerzen ausgelöst.
Freude, weil ich dank deiner Hilfe eine passende Lösung für mich gebastelt habe.
Magenschmerzen, weil du mit deinem Einwand, dass g_type überflüssig ist, natürlich recht hast. Jetzt ringe ich innerlich mit mir das Feld zu löschen und damit aber auch jede SQL-Abfrage (und das sind viele...) in meinen Programmcode zu ändern oder das Feld in der DB zu lassen...
Danke für deine Hilfe und den Link zu dem Artikel.
moin,
Jetzt will ich per Abfrage alle Maingroups, die mindestens einmal den kompletten Aufbau (Subgroup->Article_Group->Article) beinhalten, holen.
viele wege führen nach rom, ein lösungsweg hängt stark davon ab, ob die verschattelung immer so aussieht wie beschriebe, sprich:
main group -> subgroup -> article group -> artikel
sollte das zwigend <immer und wirklich immer> so sein, kannst du es mit einfachen joins lösen, musst halt in der WHERE klauel die entsprechenden g_type werte setzen. wenn diese art der rekursion immer so ist, dann stellt sich aber auch die frage, ob man dann nicht eventuell das daten-design überarbeitet, falls das möglich ist oder es gründe gibt, die dagegen sprechen.
Ilja