SUM/CONCAT für Stringwerte

SUM/CONCAT für Stringwerte

am 19.03.2006 16:24:18 von Bernd Muent

Hallo zusammen,
wenn ich hätte

Tabelle test:
name wert
aaa 1
aaa 2
aaa 3
bbb 1

Dann würde "SELECT name,SUM(wert) as summe FROM test GROUP BY name" ergeben:
name summe
aaa 6
bbb 1

Schön, jetzt hätte ich sowas gerne für Strings, die zusammengefügt
werden sollen

Tabelle test
name lang description
aaa de deutsch
aaa en english
aaa fr francais
bbb de deutsch

Daraus hätte ich gerne:
name description
aaa [de]deutsch|[en]english|[fr]francais
bbb [de]deutsch

ich habe als erstem Näherungsversuch (unter Nichtbeachtung des "[de]"
usw. aus der lang-Spalte mal folgendes versucht:
"SELECT name,CONCAT(description) as description FROM test GROUP BY name"
Ergibt
name description
aaa deutsch
bbb deutsch

Sprich, die Strings werden nicht aneinandergefügt, sodern es steht nur
der erste drin.

Eine PHP-Lösung weiss ich zwar, finde ich aber nicht so elegant:
$result=mysql_query("SELECT name,description FROM test order by name");
while (list($name,$lang,$description)=mysql_fetch_row($result) {
if (isset($desc["name"])) $desc["name"]).="|";
$desc["name"].="[$lang]$description;
}

Danke schön für Ideen, wie ich das mit "reinem" SQL lösen könnte,
Bernd

Re: SUM/CONCAT für Stringwerte

am 19.03.2006 17:30:35 von Niels Braczek

Bernd Muent schrieb:

> Danke schön für Ideen, wie ich das mit "reinem" SQL lösen könnte,
> Bernd

de.comp.datenbanken.* ist gleich nebenan.

MfG
Niels

--
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |
| Webdesign · Webhosting · E-Commerce · Mambo Content Management |
------------------------------------------------------------ ----

Re: SUM/CONCAT fürStringwerte

am 19.03.2006 17:42:57 von Sven Paulus

In de.comp.datenbanken.mysql Bernd Muent wrote:
> Schön, jetzt hätte ich sowas gerne für Strings, die zusammengefü=
gt=20
> werden sollen
> Tabelle test
> name lang description
> aaa de deutsch
> aaa en english
> aaa fr francais
> bbb de deutsch
> Daraus hätte ich gerne:
> name description
> aaa [de]deutsch|[en]english|[fr]francais
> bbb [de]deutsch

SELECT name,
GROUP_CONCAT(CONCAT('[',lang,']',description) SEPARATOR '|') result
FROM mytable GROUP BY name

Re: SUM/CONCAT fürStringwerte

am 19.03.2006 17:42:57 von Sven Paulus

In de.comp.datenbanken.mysql Bernd Muent wrote:
> Schön, jetzt hätte ich sowas gerne für Strings, die zusammengefü=
gt=20
> werden sollen
> Tabelle test
> name lang description
> aaa de deutsch
> aaa en english
> aaa fr francais
> bbb de deutsch
> Daraus hätte ich gerne:
> name description
> aaa [de]deutsch|[en]english|[fr]francais
> bbb [de]deutsch

SELECT name,
GROUP_CONCAT(CONCAT('[',lang,']',description) SEPARATOR '|') result
FROM mytable GROUP BY name

Re: SUM/CONCAT für Stringwerte

am 19.03.2006 18:25:37 von Bernd Muent

Sven Paulus schrieb:

> In de.comp.datenbanken.mysql Bernd Muent wrote:
>> Schön, jetzt hätte ich sowas gerne für Strings, die zusammengefügt
>> werden sollen
>> Tabelle test
>> name lang description
>> aaa de deutsch
>> aaa en english
>> aaa fr francais
>> bbb de deutsch
>> Daraus hätte ich gerne:
>> name description
>> aaa [de]deutsch|[en]english|[fr]francais
>> bbb [de]deutsch
>
> SELECT name,
> GROUP_CONCAT(CONCAT('[',lang,']',description) SEPARATOR '|') result
> FROM mytable GROUP BY name

Danke schön. Genau dieses "GROUP_CONCAT" suchte ich.

Gruß, Bernd

Re: SUM/CONCAT für Stringwerte

am 19.03.2006 18:25:37 von Bernd Muent

Sven Paulus schrieb:

> In de.comp.datenbanken.mysql Bernd Muent wrote:
>> Schön, jetzt hätte ich sowas gerne für Strings, die zusammengefügt
>> werden sollen
>> Tabelle test
>> name lang description
>> aaa de deutsch
>> aaa en english
>> aaa fr francais
>> bbb de deutsch
>> Daraus hätte ich gerne:
>> name description
>> aaa [de]deutsch|[en]english|[fr]francais
>> bbb [de]deutsch
>
> SELECT name,
> GROUP_CONCAT(CONCAT('[',lang,']',description) SEPARATOR '|') result
> FROM mytable GROUP BY name

Danke schön. Genau dieses "GROUP_CONCAT" suchte ich.

Gruß, Bernd