Entwickler-Ecke

Datenbanken - Zellen Werte mehrerer Zeilen gruppieren


OliverN_26 - Fr 27.07.12 07:57
Titel: Zellen Werte mehrerer Zeilen gruppieren
Hallo liebes Forum

Wusste nicht wie ich den Betreff beschreiben sollte. Ich suche also nicht "LIMIT". Ich möchte die Ergeniszeilen in einem Feld zusammen clippen.

Beispiel:

Quelltext
1:
2:
3:
4:
5:
6:
ID  Name     Auto
--------------------------------
1   Peter    Mercedes
2   Hans     Audi
3   Klaus    Opel
4   Oliver   VW

--> "SELECT Name FROM table ORDER BY Name"

Ergebnis soll nun "nicht" 4 Zeilen untereinander sein, sondern 1 Feld in dem "Hans, Klaus, Oliver, Peter" steht.
Geht so was?

P.s.: Das Beispiel hat nichts mit meiner Situation zu tun. Ich benötige das da ich zu einer Auftragsnummer mehrere Texteinträge in einem Table habe und diese würde ich gerne zusammenschneiden, anstatt sie untereinander anzuzeigen.

Vielen Dank im voraus.

lg
Oli


thepaine91 - Fr 27.07.12 08:33

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_concat-ws


OliverN_26 - Fr 27.07.12 08:52

Ich kenne CONCAT, aber damit kann ich doch nur Felder einer Ergebniszeile zusammenschneiden, oder?
Wie würde denn der SELECT aussehen, wenn ich mit CONCAT mehrere Ergebniszeilen zusammenschneide?

Danke

lg
Oli


thepaine91 - Fr 27.07.12 10:42

Ja das geht auch:


SQL-Anweisung
1:
SELECT `x_id`, group_concat(' seperator 'FROM tabel GROUP BY `data_field`;                    


EDIT: Und den Titel könntest du z.B. in "Zellen Werte mehrerer Zeilen zusammenführen/gruppieren" oder ähnlich ändern. ;)


OliverN_26 - Fr 27.07.12 11:03

Ein Traum. Das ist genau was ich gesucht habe.
Vielen Dank :-)


OliverN_26 - Fr 03.08.12 11:11

Hallo

Ich muß das Thema leider noch mal pushen, da ich auf ein kleines Problem gestoßen bin.
Generier ich meinen SELECT in PHPMyAdmin (oder sonstiger Datenbank-Software) steht in der Spalte "group_concat" alles so wie es sein soll. Binde ich den SELECT in ein AJAX-Script ein schneidet er mir ständig Zeichen ab (so bei 340).

GROUP_CONCAT_MAX_LEN hab ich entdeckt, aber 1024 sollte doch die Anzahl der Zeichen sein (?!), welche ich doch somit gar nicht erreiche.

Frage: Mach ich was falsch? Muß ich ggf. den MAX_LEN erhöhen? Nur müsste er nicht in der Datenbank-Software auch abschneiden?

Vielen Dank im voraus

lg
Oliver


OliverN_26 - Mo 06.08.12 07:23

Hallo

Ein

SQL-Anweisung
1:
SET GROUP_CONCAT_MAX_LEN = 2048                    

war die Lösung.

Danke noch einmal.

lg
Oli