2012-08-23 95 views
2

我有兩個表格。一個是產品的列表,一個是他們許多屬性的列表。 (這已經從我原來的模型簡化了;))從右表返回一行並記錄多條記錄

prods有兩列:idname
taxons有三列:id,nameprod_id

Prods有四個記錄:

id | name 
= = = = = = 
1 | boat 
2 | tree 
3 | lamp 
4 | soda

Taxons有十五記載:

 id | name | prod_id 
= = = = = = = = = = = = = = 
1 | bright | 3 
2 | breezy | 1 
3 | green  | 2 
4 | wet  | 1 
5 | sturdy | 2 
6 | shady  | 2 
7 | antique | 3 
8 | deciduous | 2 
9 | buoyant | 1 
10 | fizzy  | 4 
11 | calming | 2 
12 | carefree | 1 
13 | big  | 1 
14 | sweet  | 4 
15 | brass  | 3

我想是使用prods.idtaxons.prod_id是加入taxonsprods查詢,但只返回4行,所以像這樣:

(所需)R esult:

1 | boat | breezy | wet  | buoyant | carefree | big 
2 | tree | green | sturdy | shady | deciduous | calming 
3 | lamp | bright | antique | brass 
4 | soda | fizzy | sweet

我不知道哪裏去了這一點,我已經試過工會的各種組合和連接,但還沒有找到任何工作。我們正在使用postgres。有任何想法嗎?

回答

2

應該能夠在這篇文章中GROUP_CONCAT當量適應:

Postgresql GROUP_CONCAT equivalent?

+0

謝謝,這工作。 :)我以爲我搜索過高和低!結束了這樣的事情:SELECT p.name,array_agg(t.name)作爲prod_taxons FROM prods作爲p LEFT JOIN taxons as t ON p.id = t.prod_id GROUP BY p.name; – melissanoelle

+0

很高興工作! – mwigdahl

3

要獲得所有的值一列,你可以使用array_agg()

select p.id, array_agg(t.name) list 
from prods p 
inner join taxons t 
    on p.id = t.prod_id 
group by p.id 

SQL Fiddle with Demo