MySQL列;在结果集中一分为二

MySQL列;在结果集中一分为二,mysql,Mysql,我们继承了一个表结构,如下所示: --------------------------------------------- option_id title option_type_id(FK) --------------------------------------------- 1 Option1 1 2 Option2 1 3 Option3

我们继承了一个表结构,如下所示:

---------------------------------------------
option_id        title    option_type_id(FK)
---------------------------------------------
 1             Option1             1
 2             Option2             1
 3             Option3             2
 4             Option4             2
 5             Option5             3
上表是系统中可用的一组“选项”

---------------------------------------------
 map_id        item_id         option_id(FK)
---------------------------------------------
   1             16378             1
   2             16378             4
   3             87680             2
   4             87680             3
   5             87680             5
下表有一个指向上表的外键链接,它映射出附加到每个项目的所有“选项”

问题是,理想情况下,我们希望显示每个选项的数据集分割,如下所示:

-----------------------------------------------
 item_id       option_type_1      option_type2
-----------------------------------------------
    87680         Option2            Option3

有人能帮忙吗?我尝试过内部连接和外部连接,但似乎没有什么可以完全覆盖所有的可能性。在这种特殊情况下,我们只关心结果集的选项类型1和2。

如果您只对选项1和选项2感兴趣,那么:

select item_id, o1.title, o2.title
from itemtable as IT
left join optiontable as O1 on it.option_id = o1.option_id and option_type_id = 1
left join optiontable as O2 on it.option_id = o1.option_id and option_type_id = 2

您需要的是pivot查询,mysql不支持。当您希望自动创建更多列时,变通方法会变得非常丑陋,并且无法动态调整以适应更多/更少的列。这最好在客户端应用程序中完成。