Anfängerfrage für Abfrage
am 24.01.2008 20:13:41 von MArtin Schumacher
Hallo,
Ich habe leider noch nicht so grosse Erfahrungen mit MySQL. Ich habe
folgendes Problem:
Ausgangslage ist vereinfacht folgende Tabelle:
ID;ID Vater; Name Kind
1;10;Rolf
2;10;Hans
3;10;Rita
4;11;Klaus
5;11;Stefanie
6;12;Boris
Ich möchte nun ein Select, welches die Datensätze mit der gleichen
"Vater-ID" in einer Zelle zusammenfasst und mit Komma trennt. Die ID des
Kindes benötige ich nicht mehr unbedingt.
ID Vater; Namen Kinder
10; Rolf, Hans, Rita
11; Klaus, Stefanie
12; Boris
Hat mir jemand einen Rat wie ich das hinkriege. Ich habe da leider keine
Idee. Ich verwende MySQL in der 5er Version.
Besten Dank für jede Hilfe.
Gruss
Martin
Re: Anfängerfrage für Abfrage
am 24.01.2008 20:35:38 von Sebastian Suchanek
Martin Schumacher schrieb:
> [...]
> Ich möchte nun ein Select, welches die Datensätze mit der gleichen
> "Vater-ID" in einer Zelle zusammenfasst und mit Komma trennt. Die ID des
> Kindes benötige ich nicht mehr unbedingt.
>
> ID Vater; Namen Kinder
> 10; Rolf, Hans, Rita
> 11; Klaus, Stefanie
> 12; Boris
>
> Hat mir jemand einen Rat wie ich das hinkriege.
SELECT
Vater,
GROUP_CONCAT(Kind, SEPARATOR ', ') AS Kinder
FROM tabelle
GROUP BY Vater
HTH,
Sebastian
Re: Anfängerfrage für Abfrage
am 24.01.2008 20:44:12 von Thomas Rachel
Martin Schumacher schrieb:
> Ausgangslage ist vereinfacht folgende Tabelle:
>
> ID;ID Vater; Name Kind
> 1;10;Rolf
> 2;10;Hans
> 3;10;Rita
> 4;11;Klaus
> 5;11;Stefanie
> 6;12;Boris
also:
CREATE TEMPORARY TABLE t (id int, idv int, kind);
insert into t values (1,10,'Rolf'), (2,10,'Hans'), (3,10,'Rita'),
(4,11,'Klaus'), (5,11,'Stefanie'), (6,12,'Boris');
> Ich möchte nun ein Select, welches die Datensätze mit der gleichen
> "Vater-ID" in einer Zelle zusammenfasst und mit Komma trennt. Die ID des
> Kindes benötige ich nicht mehr unbedingt.
>
> ID Vater; Namen Kinder
> 10; Rolf, Hans, Rita
> 11; Klaus, Stefanie
> 12; Boris
select idv,group_concat(kind) from t group by idv;
+------+--------------------+
| idv | group_concat(kind) |
+------+--------------------+
| 10 | Rolf,Hans,Rita |
| 11 | Klaus,Stefanie |
| 12 | Boris |
+------+--------------------+
hm, das geht auch schöner.
select idv as `ID Vater`,group_concat(kind ) AS `Namen Kinder` from t
group by idv;
+----------+----------------+
| ID Vater | Namen Kinder |
+----------+----------------+
| 10 | Rolf,Hans,Rita |
| 11 | Klaus,Stefanie |
| 12 | Boris |
+----------+----------------+
Ja, fast.
select idv as `ID Vater`,group_concat(kind SEPARATOR ', ') AS `Namen
Kinder` from t group by idv;
+----------+------------------+
| ID Vater | Namen Kinder |
+----------+------------------+
| 10 | Rolf, Hans, Rita |
| 11 | Klaus, Stefanie |
| 12 | Boris |
+----------+------------------+
Prima!
HTH,
Thomas
Re: Anfängerfrage für Abfrage
am 24.01.2008 23:08:20 von MArtin Schumacher
Hallo Thomas
Besten Dank für die Hilfe. Das war genau das, was ich gesucht habe.
MFG
Martin
> select idv as `ID Vater`,group_concat(kind SEPARATOR ', ') AS `Namen
> Kinder` from t group by idv;
> +----------+------------------+
> | ID Vater | Namen Kinder |
> +----------+------------------+
> | 10 | Rolf, Hans, Rita |
> | 11 | Klaus, Stefanie |
> | 12 | Boris |
> +----------+------------------+
>
>
> Prima!
>
>
> HTH,
>
> Thomas