Bobby: spezielle Abfrage über mehrere Tabellen mit PHP

Moin

Ich weiß nicht so recht wie ich mein Problem schildern soll.
zumindest komme ich einfach nicht weiter. Folgende Ausgangssituation:

ich habe 2 MySQL-Tabellen.

Tabelle "kat":
id   name
1    Kategorie1
2    Kategorie2

Tabelle "artikel":
id   name      katid
1    Artikel1  1
2    Artikel2  1
3    Artikel4  2
4    Artikel5  2

Nun möchte ich mit einen SQL-Statement und PHP die Abfrage der Kategorien und der Artikel erledigen.

Am Ende soll ein Objekt (oder Array) mit folgender Struktur rauskommen:

$ergebnis[0][name]=>"Kategorie1"
            [id]=>"1"
            [artikel][0][name]=>"Artikel1"
                        [id]=>"1"
                     [1][name]=>"Artikel2"
                        [id]=>"2"
            [1][name]=>"Kategorie2"
            [id]=>"2"
            [artikel][0][name]=>"Artikel4"
                        [id]=>"3"
                     [1][name]=>"Artikel5"
                        [id]=>"4"

ich möchte dieses Ergebnis unbedingt durch 1 Query erhalten. Leider blieben alle  Versuche erfolglos. Das Ergebnis ist immer 1 Dimensional.

Wie bekomm ich das Ergebnis entsprechend des oben genannten Datenmusters mit 1 Query hin. Wo liegt mein Denkfehler?

Ich habe es versucht mit AS, mit LEFT JOIN, UNION. Nichts brachte das gewünschte Ergebnis.

Gruß Bobby

--
-> Für jedes Problem gibt es eine Lösung, die einfach, sauber und falsch ist! <-
-> Nicht das Problem macht die Schwierigkeiten, sondern unsere Sichtweise! <-
ie:{ br:> fl:{ va:} ls:< fo:) rl:( n4:( de:> ss:) ch:? js:( mo:} sh:) zu:)
  1. Wie bekomm ich das Ergebnis entsprechend des oben genannten Datenmusters mit 1 Query hin. Wo liegt mein Denkfehler?

    garnicht - die mysql funktionen liefern keine mehrdimensionalen arrays - du musst dir in erster linie mit einer abfrage das holen was du brauchs (JOIN ist übrigens ein guter ansatz)

    mit mysql_fetch_assoc() erhältst du dann ein assoziatives array, dies kannst du dann deinen wünschen gerecht verarbeiten

    btw: ggf solltest du über dein wunsch array nochmal nachdenken, mir kommt das nicht recht logisch vor

  2. Hallo Bobby,

    Ich weiß nicht so recht wie ich mein Problem schildern soll.
    ich möchte dieses Ergebnis unbedingt durch 1 Query erhalten. Leider blieben alle  Versuche erfolglos. Das Ergebnis ist immer 1 Dimensional.

    das Ergebnis einer Abfrage ist normalerweise eine Tabelle. Ein Tabelle ist typischerweise zweidimensional, die eine Dimension sind die Spalten, die andere sind die Zeilen. Es kann vorkommen, dass eine Abfrage keine Zeilen zurückliefert, dann ist das Ergebnis in der Tat "eindimensional".

    Alles andere ist ein Problem der Verarbeitung des Ergebnisses in der API, bei Dir PHP. Ein Stichwort für Deine Suche wäre "Gruppenwechsel".

    Freundliche Grüße

    Vinzenz