![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Männlich :)
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 28
|
Hi,
ich habe mal wieder eine kleine Denkblockade. Ich versuche mich kanpp zu halten, aber dennoch nichts zu vergessen. Mein Aufbau Kunden können Ihre Artikel wie in einem Shop in eine Kategorie eintragen. Die Kategorien liegen in einer Tabelle und die Artikel in einer anderen, klar.
Kunde A benutzt nun die Kategorie 1 -> 5 -> 7, in der datenbank speichere ich nur die 7. Es ist aber auch möglich das der Kunde den Artikel in 1 Pakt, also keine Unter/Unterunter -Kategorie. Mein Vorhaben Ich möchte einen kleinen Shop für jeden Kunden anbieten. Angezeigt werden sollen jedoch erst nur die Hauptkategorien (1, 9, 13, 14). Wie bekomme ich also raus das die Kategorie 1 eingeblendet werden soll, da ja ein Artikel in der Unterunterkategorie 7 vorhanden ist. Datenbankstruktur* category_id, category_parent_id, category_level, category_title Ich hoffe ich konnte erklären worauf ich hinaus will... danke und Gruß nox *Sollte selbsterklärend sein, falls nicht einfach Fragen. Frage ja auch |
|
|
|
|
|
Nach oben #2 |
|
Erfahrener Benutzer
Registriert seit: 30.03.2006
Ort: Pfinztal
Beiträge: 355
|
Wenn ichs richtig verstanden habe, ist dein Baum beliebig tief, richtig? Das geht dann nicht in einer einzigen SQL-Abfrage zu machen.
__________________
Open Sourcing the Online Gaming Universe PHP/SQL/Java/C++/Assembler. Seit Jahren Mitglied und Entwickler in einem der wohl größten Java-Projekte der Welt: http://weblogs.java.net/blog/hansmul...e_desktop.html |
|
|
|
|
|
Nach oben #5 | |
|
Männlich :)
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 28
|
Zitat:
category_parent_id enthält die category_id von der übergeordneten Kategorie Nicht die sauberste Lösung, aber lässt sich leider nicht mehr ändern! Gruß nox |
|
|
|
|
|
|
Nach oben #6 | |
|
Neuer Benutzer
Registriert seit: 03.05.2008
Beiträge: 7
|
Hm, bei der Angaben...
Zitat:
Hast du dich schonmal mit der Normalisierung von Datenbanken auseinander gesetzt? Also entweder du füllst dein oben aufgeführtes Datenkonstrukt mit redundanten Daten, oder du musst alles auf mehrere Tabellen aufteilen (Normalisieren). Geändert von Chrunchy (28.05.2008 um 17:18 Uhr). |
|
|
|
|
|
|
Nach oben #7 | ||
|
Männlich :)
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 28
|
Zitat:
Gruß nox |
||
|
|
|
|
|
Nach oben #8 |
|
Semantic Web Fanatic
Registriert seit: 03.06.2006
Beiträge: 237
|
Ich habs mir nicht genauer angeguckt, bin mir auch nicht sicher, ob sich das für 3 tiefen lohnt, aber guck einfach mal:
Nested Sets oder Rekursion
__________________
Applikations-Programmierung: BlitzMax, BlitzPlus Webentwicklung: PHP, (X)HTML, CSS, JavaScript, MySQL |
|
|
|
|
|
Nach oben #9 | |
|
Projektleiter
Registriert seit: 02.12.2004
Ort: Wildeshausen
Beiträge: 2.225
|
Zitat:
__________________
Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
|
|
|
|
|
|
Nach oben #10 |
|
Neuer Benutzer
Registriert seit: 03.05.2008
Beiträge: 7
|
@nox,
Warum sind gibt es folgenden Eintrag in deiner Tabelle? category_id = NULL category_parent_id = NULL category_level = 7 Wenn du hier nun die Spalten ausfüllst mit category_id = 1 category_parent_id = 5 category_level = 7 Dann hast du doch zu jedem category-level alle erforderlichen Werte, oder? Das ganze ist dann identisch mit dem Link von Artemis zur Rekursion.
__________________
Gruß Chrunchy |
|
|
|
|
|
Nach oben #11 | ||
|
Der Student
Registriert seit: 03.01.2007
Ort: München
Beiträge: 86
|
Zitat:
In dem Beispiel wird Pro Kategorie ein Query abgesendet um die Unterkategorien zu holen und dann wird für jede Unterkategorie ein Query abgeschickt der deren Unterkategorien ausliest. Bedeutet du hast bei k Kategorien, 2k Querys! Du hast also für jede Kategorie die du anlegst zwei weitere Querys die deine Datenbank bei JEDEM Aufbau des Menüs belasten. Mit Nested Sets kannst du den ganzen Baum mit einer einzigen Abfrage lösen. Dafür kommen zwar mehr Abfragen beim Hinzufügen/Löschen dazu, aber diese können vernachlässigt werden da Lese/Schreibzugriff in keinem Verhältnis steht!
__________________
Wenn ich du wäre, wäre ich lieber ich. http://www.clubstars.net http://www.x-tinct.de |
||
|
|
|
|
|
Nach oben #12 | ||
|
Männlich :)
Registriert seit: 22.11.2006
Ort: Haan
Beiträge: 28
|
Zitat:
category_id ist niemals! NULL. category_parent_id ist bei den Hauptkategorien NULL, category_level geht immernoch nur bis 3 #Edit: Jetzt weiss ich auch wie du das siehst, nein so ist es nicht category_level dient nur um herauszufinden in welcher ebene sich die Kategorie befindet. Ist für mehere andere dinge wichtig (Werbemodul etc.) Zitat:
Boing und Bingo! Genau das ist Mein Problem jedoch das es "nur" 1.000 Kategorien mit allen Haupt und Unterkategorien sind. Denoch währen es kanpp 1.000 SQL-Querys, was ein großes Portal natürlich total in die Knie zwingt! Also die Lösung nested sets ? Und ich hab gehoft ich komme dieses mal noch drum rum! Gruß nox |
||
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [MySQL] Zufallsdatensätze zu Kategorien optimiert | robo47 | Datenbanken | 3 | 27.12.2007 17:17 |
| [Suche] MySQL Tool ähnlich MySQL Front | ex³ | Gesuche | 5 | 22.12.2006 18:52 |
| ssh tunnel zu einer mysql datenbank | beny_mcde | Datenbanken | 4 | 07.06.2006 16:05 |
| [Linux] LAMP Tutorial - Installation von Apache, MySQL und PHP unter Linux | Corvin | Tutorials | 6 | 17.04.2006 22:13 |
| MySQL 5.1 kommt in die Beta-Phase | Ben | Nachrichten | 1 | 02.03.2006 14:31 |