On Sun, 21 Sep 2003 20:39:58 +0200, Johan Holst Nielsen
<johan@weknowthewayout.com> wrote:
>Således jeg reelt selecter alle sammen... således jeg reelt får flere
>statusdates i et row
>
>Problemet er at jeg ikke kan gøre det i en query? Afaik Eller kan jeg?
>Eventult hvis jeg opdaterer til MySQL 4.0 ?
MySQL 4.1 (der er i alpha), har en ret cool GROUP_CONCAT, hvor du ved
en GROUP BY kan få de sammenslåede felter returneret vertikalt. Jeg
synes, det lyder som om, det er det, du er interesseret i. Ellers må
du give et helt præcist eksempel på hvordan, dit resultat skal se ud.
Jeg har skrevet lidt løst om det på
http://stock.ter.dk/mysql410.txt :
==
Først en liste over folk i forskellige afdelinger. Det kan vi normalt
let JOIN'e på, fx:
mysql> SELECT employee.department_id, employee.name FROM employee
ORDER BY department_id;
+---------------+-------------------+
| department_id | name |
+---------------+-------------------+
| 1 | Peter Johnson |
| 2 | John Smith |
| 2 | Jack Smith |
| 2 | Michael Friday |
| 3 | Bartholomew White |
| 3 | Lisa Craft |
+---------------+-------------------+
6 rows in set (0.01 sec)
Nu ville det være rart med én række pr. afdeling, og så bare en liste
over folk i afdelingen:
mysql> SELECT department_id, GROUP_CONCAT(name SEPARATOR ', ') FROM
employee
GROUP BY department_id;
+---------------+--------------------------------------------+
| department_id | GROUP_CONCAT(employee.name SEPARATOR ', ') |
+---------------+--------------------------------------------+
| 1 | Peter Johnson |
| 2 | John Smith, Jack Smith, Michael Friday |
| 3 | Bartholomew White, Lisa Craft |
+---------------+--------------------------------------------+
==
--
- Peter Brodersen
Ugens sprogtip: terabyte (og ikke terrabyte)