Spaltenwerte in MySQL-Ergebnis durch Entsprechungen aus der gleichen Tabelle ersetzen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Spaltenwerte in MySQL-Ergebnis durch Entsprechungen aus der gleichen Tabelle ersetzen

    Guten Tag!

    Ich habe eine Tabelle, in der Kategorien und Unterkategorien gespeichert sind. Die Unterkategorien werden anhand einer Parent ID einer Kategorie untergeordnet.
    Code:
    SELECT * FROM categories ORDER BY parent, id;


    Nun hätte ich gerne eine Abfrage, in deren Ergebnis die Parent ID durch den Namen der entsprechenden Oberkategorie ersetzt wurde. Meine Gedanken dabei gingen in folgende Richtung, jedoch ohne Erfolg:
    Code:
    SELECT id, name, (SELECT name FROM categories WHERE parent = id) parent
    FROM categories
    ORDER BY parent, id;
    Weiß jemand, wie genau die Abfrage aussehen muss, um das gewünschte Ergebnis zu erzielen?

    Gruß

    Jag
    =^..^=

  • #2
    Hallo,

    ich verstehe dein Problem nicht. Ich würde das jetzt so machen, kann aber nicht sagen, ob es das ist, was du brauchst:
    Code:
    SELECT id, name AS parent FROM categories ORDER BY parent, id;

    Kommentar


    • #3
      Was spricht gegen einen LEFT JOIN?

      Code:
      SELECT a.id, a.name, b.name parent
        FROM categorie a
        LEFT JOIN categorie b
          ON b.parent = b.id
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        Ich dachte jetzt eher an INNER JOIN. Aber was mich vewirrt ist die Tatsache, dass er alles in einem einzigen Table speichert, weshalb ich das genaue Problem nicht verstehe.
        Wenn man eh alles in einem Table speichert, warum dann nicht gleich die passende Kategorie und überhaupt: welcher Name gehört nun zu welcher Kategorie?

        Kommentar


        • #5
          Original geschrieben von Manko10

          Wenn man eh alles in einem Table speichert, warum dann nicht gleich die passende Kategorie und überhaupt: welcher Name gehört nun zu welcher Kategorie?
          Du schreibst schneller als du denkst ... was glaubst du, wofür parent steht?

          Kommentar


          • #6
            Aua, ja. Ich hätte mir die Namen genauer durchlesen sollen. Außerdem hätte es mich stutzig machen sollen, dass die ersten drei Zeilen ohne Wert sind. Stattdessen hat es mich stutzig gemacht, dass er alles in einem Table speichert. .
            Aber wenn man hinterher keine Sätze ohne Kategorie haben will würde doch eher INNER JOIN nehmen - aber das kommt ganz auf den Zweck an.

            Kommentar


            • #7
              Ja natürlich, ein JOIN der Tabelle mit sich selbst. Das ist es!
              Code:
              SELECT a.id, a.name, b.name parent
              FROM categories a, categories b
              WHERE a.parent = b.id
              ORDER BY parent, id;


              Ich habe vor einer Weile von sowas gelesen, jetzt aber überhaupt nicht mehr daran gedacht.

              Danke für den Denkanstoß!

              *edit*
              Nein, moment, da steckt ein Fehler drin. Autos sind keine Biere!

              *nochmal edit*
              Genau, ich habe ihnen die falsche Parent ID zugewiesen. *schäm*
              Zuletzt geändert von Jaguar; 16.03.2008, 18:08.
              =^..^=

              Kommentar


              • #8
                Ein INNER JOIN ist zum einen langsamer ... und hat in diesem Fallen den Nachteil, dass die ROOT Knoten nicht mit ausgelesen werden ... ... deshalb der LEFT JOIN ...
                carpe noctem

                [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                Kommentar

                Lädt...
                X