运输表
id name
1 T1
2 T2
托盘表
id name
1 P1
2 P2
运输托盘容量表
id transport_id pallet_id capacity
1 1 1 10
2 1 2 null
3 2 1 20
4 2 2 24
如何生成这样的表:
id transport_id pallet_id_1_capacity pallet_id_2_capacity
1 1 10 null
2 2 20 24
问题:可以添加托盘和运输工具,因此,事先都不知道数量。 例如,经理添加了另一个托盘类型和' pallet_id_3_capacity'应生成列(如果尚未提供容量数据,则可以显示null)。 另一位经理可以填写“托盘运输能力”。表格后通知。
有没有办法在mysql中构建可以关注上述内容的sql:具体来说 - 托盘的动态数量?
答案 0 :(得分:1)
在编写查询时必须修复SQL选择列表。您无法根据找到的数据生成自动扩展列的SQL。
但是您的请求很常见,它被称为数据透视表或交叉表。
唯一的解决方案是分多步执行此操作:
所有SQL数据库都是如此,而不仅仅是MySQL。
有关在MySQL中生成数据透视表查询的高度投票解决方案,请参阅MySQL pivot row into dynamic number of columns。
我不会将您的问题投票作为该问题的副本,因为您的查询还涉及transport_id,这将使查询解决方案略有不同。但阅读其他数据透视表解决方案应该可以帮助您入门。