2017-02-17 15 views
0

Я действительно не знаю, что название должно быть, но здесь вопрос У меня есть 2 таблицы (на самом деле больше)SQL-запрос выбрать комбинированный выбрать из нескольких таблицы

table a    table b 
id (pk)| country  id(fk)| Branch 
------ | ------  ------|-------- 
01  | Indonesia 01 | Jakarta 
        01 | Bali 

если я сделать select * from a,b where a.id=b.id результатом будет

id | Country |Branch 
01 | Indonesia|Jakarta 
01 | Indonesia|Bali 

Я хочу, чтобы результат, как показано ниже

id | Country | Branch 
01 | Indonesia | Jakarta,Bali 

Возможно ли это? Я действительно не пытаюсь провести исследование (я имею в виду поиск), поскольку не знаю, какое ключевое слово я должен искать

+1

Попробуйте посмотреть вверх GROUP_CONCAT. – Scovetta

+0

Уже ответили здесь: http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string –

+0

Спасибо @Scovetta PLS сообщение в ответ, чтобы я мог указать флаг –

ответ

0

При использовании MySQL GROUP_CONCAT - это функция, которую вы ищете.

Настройка таблицы, как в приведенном выше запросе:

create table a (
    `id` int(15) auto_increment primary key, 
    `country` varchar(200) 
); 

create table b (
    `id` int(15) not null, 
    `branch` varchar(200), 
    foreign key(`id`) references a(`id`) 
); 

insert into a values (1, 'Indonesia'); 
insert into b values (1, 'Jakarta'); 
insert into b values (1, 'Bali'); 

Выполните запрос:

select a.id, 
    a.country, 
    group_concat(distinct b.branch) as 'branch' 
from a 
    left join b on a.id=b.id; 

Выход:

| id | country |  branch | 
|----|-----------|--------------| 
| 1 | Indonesia | Jakarta,Bali |