Du vil måske bruge GROUP_CONCAT() funktion som følger:
SELECT t1.id, t1.first_name, t1.last_name, GROUP_CONCAT(DISTINCT job_id ORDER BY job_id SEPARATOR ',') job_idFROM Table1 t1JOIN Table2 t2 ON (t2.Person_id =t1.id tGROUP.UP) id;
Lad os teste det med dine eksempeldata:
CREATE TABLE Table1 ( id int AUTO_INCREMENT PRIMARY KEY, fornavn varchar(50), efternavn varchar(50)); CREATE TABLE Table2 ( id int AUTO_INCREMENT PRIMARY KEY, person_id int, job_id int);INSERT INTO Table1 VALUE (NULL, 'Joe', 'Bloggs');INSERT INTO Table1 VALUES (NULL, 'Mike', 'Smith');INSERT INTO Table1 VALUES (NULL, 'Jane', 'Doe');INSERT INTO Table2 VALUES (NULL) , 1, 1);INSERT INTO Table2 VALUES (NULL, 1, 2);INSERT INTO Table2 VALUES (NULL, 2, 2);INSERT INTO Table2 VALUES (NULL, 3, 3);INSERT INTO Table2 VALUES (NULL, 3); , 4);
Resultat af forespørgslen:
+----+------------+-----------+--------+| id | fornavn | efternavn | job_id |+----+-------------+----------+--------+| 1 | Joe | Blogger | 1,2 | | 2 | Mike | Smith | 2 | | 3 | Jane | Doe | 3,4 | +----+------------+-----------+--------+
Bemærk, at resultatet af GROUP_CONCAT()
som standard er trunkeret til den maksimale længde på 1024
. Dette kan dog indstilles til en meget større værdi
. Brug kommandoen SET, hvis du har brug for at ændre den, som følger:
SET GLOBAL group_concat_max_len =2048;