Thomas: Multidimensionales Array direkt von SQL bekommen

Hallo.

Ich nutze MYSQL 5 und PHP 5.4
Angenommen es gibt folgende Datenbanken:

artikel

id | titel | artikelersteller
1, test, 1

kommentare_artikel

kommentar_id | artikel_id
1, 1
2, 1
3, 1

kommentare

id | user_id | kommentar
1, 1, "bli"
2, 1, "bla"
3, 1, "foo bar"

user

id | name
1, tester

Mein Ergebnis soll nun folgendes Array sein:
Array
(
    [0] => Array
        (
            [artikelid] => 1
            [titel] => "test"
            [artikelersteller] => "tester"
            [kommentare] => Array
                            (
                                [0] => Array(
                                            [id]=1
                                            [user_id]=1
                                            [username]="tester"
                                            [kommentar]="bli"
                                            )
                                [1] => Array(
                                            [id]=2
                                            [user_id]=1
                                            [username]="tester"
                                            [kommentar]="bla"
                                            )
                                [2] => Array(
                                            [id]=3
                                            [user_id]=1
                                            [username]="tester"
                                            [kommentar]="foobar"
                                            )
                            )
        )
)

Gibt es überhaupt Queries die so etwas zurückgeben können?
Ich habe es auf verschiedene Arten mit Subqueries und JOINS probiert, komme aber nie auf das obengenannte Ergebnis. Ich schaffe es irgendwie nicht, das ein mehrdimensionales Array entsteht. Ich hätte nur eine sehr hässliche Lösung über CONCAT wobei die Dinger dann mit "," hintereinander stehen. ich müsste sie in PHP dann mit explode wieder auseinandernehmen.

Das muss aber doch auch so gehen.

Liebe Grüße
Thomas

  1. Hallo,

    waere mir nicht bekannt, dass SQL Arrays kennt, geschweige denn erzeugen kann.

    Evendudel kannst du mithilfe von XML (manche SQL Dialekte und Produkte, z.b. Oracle, MSSSQL erlauben das) eine aehnliche Struktur wie dein Array erzeugen und dann ausserhalb des Datenbanksystems mit PHP in ein richtiges Array umwandeln. (Oder einfach als Xml belassen).

    Cheers, Frank

    1. Man muss die Ergebnisse doch irgendwie so daraus bekommen, das man - von mir aus auch mit PHP, ein schönes mehrdimensionales array bekommt.

      LG

      1. Hello,

        Man muss die Ergebnisse doch irgendwie so daraus bekommen, das man - von mir aus auch mit PHP, ein schönes mehrdimensionales array bekommt.

        Die MySQL-Funktionen kennen nur eine Rückgabe als Kanal (ähnlich einer Textdatei). Du erhältst eine Result-Ressource-Kennung auf diese "Liste" (= Ergebnismenge). Diese kannst Du dann mit den jeweiligen API-Funktionen abfragen.

        Eine Ergebnismenge ist immer karthesisch aufgebaut, das heißt, in "Zeilen" und "Spalten".

        Wenn Du nun Gruppenwechsel in deinem PHP-Array haben möchstest, also eine verzweigte Struktur aufbauen willst (das ist ja eigentlich gar kein "Array" im klassischen Sinne mehr), dann musst Du dir die selber bauen.

        Du kannst mittels Join(s) und Benutzervariablen sicherlich eine Ergebnismenge bekommen, die als Tabelle dargestellt folgendermaßen aufgebaut ist:

        [artikelid] | [titel] | [artikelersteller] | [k_id] | [user_id] | [username]| [kommentar]
        -------------+---------+--------------------+--------+-----------+-----------+-------------
                   1 | test    | tester             |      1 |         1 | tester    | bli
                   1 | test    | tester             |      2 |         1 | tester    | bla
                   1 | test    | tester             |      3 |         1 | tester    | foobar
                   1 | test    | tester             |      1 |         2 | Tom       | ok?

        Daraus kannst Du dir dann jede gewünschte Datenorganisation basteln. Das Stichwort heißt, wie schon erwähnt, "Gruppenwechsel".

        Liebe Grüße aus dem schönen Oberharz

        Tom vom Berg

        --
         ☻_
        /▌
        / \ Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de