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不支持。当您希望自动创建更多列时,变通方法会变得非常丑陋,并且无法动态调整以适应更多/更少的列。这最好在客户端应用程序中完成。