Вы можете использовать group_concat
, как показано ниже.
ввод данных:
#drop table if exists driver;
create table driver (id int(11), name varchar(255));
insert into driver (id, name) values (1, 'Edson');
insert into driver (id, name) values (2, 'Tomas');
insert into driver (id, name) values (3, 'Carry');
#drop table if exists car;
create table car (id int(11), brand varchar(255));
insert into car (id, brand) values (1, 'Ferrari');
insert into car (id, brand) values (2, 'Porsche');
insert into car (id, brand) values (3, 'McLaren');
#drop table if exists garage;
create table garage (id int(11), driver_id int(11), car_id int(11));
insert into garage (id, driver_id, car_id) values (1, 1, 1);
insert into garage (id, driver_id, car_id) values (2, 2, 2);
insert into garage (id, driver_id, car_id) values (3, 2, 3);
insert into garage (id, driver_id, car_id) values (4, 3, 2);
решение:
select d.name, group_concat(c.brand separator ', ')
from driver d
left join garage g on d.id = g.driver_id
left join car c on g.car_id = c.id
group by d.id;
Вы также можете проверить здесь, где подход рассматривается в больших длинах: Могу ли я объединить несколько MySQL строк в одно поле?