ver2felt: tabelle sortieren und in array ausgeben

Beitrag lesen

Super!!!

funktioniert wunderbar, da wäre ich nie draufgekommen...
Werde mir gleich mal ein gutes Buch zu SQL besorgen, damit ich das irgendwann mal selber hinbekomme

danke nochmal

ich war ver2felt

Hallo,

finde euer Forum richtig super und lese regelmäßig die Postings, bei der Suche habe ich aber leider nichts gefunden, bei google leider auch nichts...

warenkorb:
cart_id   produkt_id  parent_id    parent
   1          12        123        parent
   2          13        456        parent
   3          14        456        child
   4          15        456        child

array [0] => parent_id  : 123
             produkt_id : (12)

array [1] => parent_id  : 456
             produkt_id : (13, 14, 15)

mit MySQL ist dies recht einfach. Es gibt die Aggregatsfunktion GROUP_CONCAT

wobei die "parents" Pizzas sein werden und die "childs" Zutaten, wenn man noch nach child und parent innerhalb der arrays sortieren könnte,

die auch eine ORDER-BY-Klausel kennt.

wäre es genial, will aber eure zeit nicht zu arg in Anspruch nehmen...

Das recht einfache SQL-Statement soll also folgendes liefern:

Gib mir
    für jede parent_id
    die aufsteigend sortierte durch Komma getrennte Liste der produkt_ids
aus der Tabelle warenkorb
wobei es für jede
    der parent_id
    nur einen Datensatz geben soll.

SELECT                                -- Gib mir
    parent_id,                        -- die parent_id
    [link:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat@title=GROUP_CONCAT](                 -- und die Liste der zugehörigen
        [link:http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_cast@title=CAST](product_id AS CHAR)  -- in Zeichenketten umgewandelten product_ids
        ORDER BY product_id           -- aufsteigend sortiert,
        SEPARATOR ', '                -- durch Komma und Leerzeichen getrennt
    ) zutaten                         -- (gib der Spalte einen netten Namen=
FROM                                  -- aus der Tabelle
    warenkorb                         -- warenkorb
GROUP BY                              -- gruppiert nach (d.h. ein Wert je)
    parent_id                         -- den verschiedenen Werten der parent_id,
ORDER BY                              -- aufsteigend sortiert nach
    parent_id                         -- der parent_id


>   
> liefert bei Deinen Daten folgendes Ergebnis:  
>   
> parent\_id zutaten  
> --------- ----------  
> 123       12  
> 456       13, 14, 15  
>   
> [Dein zweiter Beitrag](https://forum.selfhtml.org/?t=180918&m=1196123) läßt mich vermuten, dass Du ein Anfänger in Sachen SQL bist. Das ist nichts Schlimmes: jeder hat einmal angefangen. SQL-Abfragen in Schleifen abzufeuern, ist meist keine gute Idee. Typischerweise will man in solchen Fällen einen JOIN verwenden. Statt über Schleifen diese id-Werte in Namen wie "Pizza Diavolo" und "Peperoni" oder "Salami" umzusetzen, solltest Du diese Namen aus den entsprechenden Tabellen nehmen.  
>   
> Zu Joins findest Du unter SELFHTML aktuell zwei Artikel, die Dir beim Einstieg helfen können:  
>   
>   - [Einführung in Joins](http://aktuell.de.selfhtml.org/artikel/datenbanken/joins/)  
>   - [Fortgeschrittene Jointechniken](http://aktuell.de.selfhtml.org/artikel/datenbanken/fortgeschrittene-joins/)  
>   
>   
> Freundliche Grüße  
>   
> Vinzenz