Karsten: mysql, Abfrage einer Menüstruktur, Unterseiten

Abfrage einer Menüstruktur.#

Ich habe Seiten und Unterseiten, die ich den jeweiligen Hauptseiten zugeordnet habe.

Aufbau meiner Tabelle

ID ! SEITENTITEL  ! VON
1  ! Wetter       ! 0
2  ! Sonnenschein ! 1
3  ! Regen        ! 1
4  ! Meer         !  0
5  ! Fisch        !4

Die Seiten würde ich so abfragen:

SELECT id, seitentitel FROM tabelle WHERE id>0 ORDER BY id
aber so bekomme ich nur die Haupttitel, bei denen „VON = 0“ ist.

Wetter
Meer

Wie kann ich es bewerkstelligen, das auch die Unterseiten in meine Ausgabe einbezogen werden. Das das Ergebnis dieses wäre:

Wetter
Wetter -> Sonnenschein
Wetter -> Regen
Meer
Meer   -> Fisch

Für Informationen die zu Lösung meines Problemes führen ist eine Belohnung von 1.000.000 Dankeschöns ausgesetzt!

Karsten

  1. hi Karsten,

    Für Informationen die zu Lösung meines Problemes führen ist eine Belohnung von 1.000.000 Dankeschöns ausgesetzt!

    Die Lösung heißt Normalisierung. Die musst Du nicht unbedingt auf die allerletzte Normalform bringen, aber für Dein Modell, was eine 1:n Beziehung darstellt, würde ich zwei Tabellen anlegen, die Abfrage wird dann ein left outer join, der auch gar nicht soo schwer verständlich ist.

    Hotti

  2. hi,

    Ich habe Seiten und Unterseiten, die ich den jeweiligen Hauptseiten zugeordnet habe.

    Aufbau meiner Tabelle

    ID ! SEITENTITEL  ! VON
    1  ! Wetter       ! 0
    2  ! Sonnenschein ! 1
    3  ! Regen        ! 1
    4  ! Meer         !  0
    5  ! Fisch        !4

    Die Seiten würde ich so abfragen:

    SELECT id, seitentitel FROM tabelle WHERE id>0 ORDER BY id
    aber so bekomme ich nur die Haupttitel, bei denen „VON = 0“ ist.

    So, Du möchtest die Tabelle behalten ;)

    Versuche einen inner join, ungetestet (und feldnamen klein, die musst Du anpassen und ggf. in Backticks quoten):

      
    SELECT table.id, table.seitentitel FROM table as basetable  
    INNER JOIN basetable ON table.id = basetable.id  
    
    

    Select-Liste auch anpassen, where-Klause, order by hintendran. Wichtig bei inner join: die Tabelle bekommt einen alias.

    Hotti