我有一个名为items_data的表中的项目数据。
对于每一行,我有3列包含类别标签(cat1,cat2,cat3)。有些属于三个类别,有些只包含1个,其中cat2和cat3将有一个空单元格。
类别标签是出现在名为cat_label的另一个表中的ID,其中包含两列,一列带有ID,另一列带有类别的列。
我想连接这两个表来形成一个新表,如果该项属于两个类,则会创建两行,输出将是两列,一列是项,另一列是其类。
答案 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