使用来自多个类别的数据连接表格

时间:2014-06-18 07:32:54

标签: sql postgresql

我有一个名为items_data的表中的项目数据。

对于每一行,我有3列包含类别标签(cat1,cat2,cat3)。有些属于三个类别,有些只包含1个,其中cat2和cat3将有一个空单元格。

类别标签是出现在名为cat_label的另一个表中的ID,其中包含两列,一列带有ID,另一列带有类别的列。

我想连接这两个表来形成一个新表,如果该项属于两个类,则会创建两行,输出将是两列,一列是项,另一列是其类。

2 个答案:

答案 0 :(得分:0)

使用UNION ALL

select a.item, b.name
from items_data a
join cat_label b on a.cat1 = b.id
union all 
select a.item, b.name
from items_data a
join cat_label b on a.cat2 = b.id
union all
select a.item, b.name
from items_data a
join cat_label b on a.cat3 = b.id

答案 1 :(得分:0)

select i.cat1, c.cat_label from items_data i inner join cat_label c on i.cat1 = c.id
union
select i.cat2, c.cat_label from items_data i inner join cat_label c on i.cat2 = c.id
union
select i.cat3, c.cat_label from items_data i inner join cat_label c on i.cat3 = c.id