Anfängerfrage für Abfrage

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