2017-02-17 72 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請發表回覆,以便我可以答覆 –

回答

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 |