我无法创建我可以从其他线程读取的内容称为PIVOT表。
认为答案在本文http://stratosprovatopoulos.com/web-development/mysql/pivot-table-with-dynamic-columns/中,但无法理解它
我有一张产品表和一张图表 一种产品可以有很多图像。
如果我帮忙,可以说一个产品最多可以有8个图像。
产品
+----------+-------------+ |ProductId | ProductName | +----------+-------------+ | 1 | ProductA | +----------+-------------+ | 2 | ProductB | +----------|-------------+
IMAGE
+----------+-------------+ |ProductId | ImageName | +----------+-------------+ | 1 | FileA | +----------+-------------+ | 1 | FileB | +----------|-------------+ | 2 | FileC | +----------|-------------+
我现在拥有什么
SELECT p.ProductId, ProductName, ImageName
FROM PRODUCT p
LEFT JOIN IMAGE i
ON p.ProductId = i.ProductId
+----------+-------------+-----------+ |ProductId | ProductName | ImageName | +----------+-------------+-----------+ | 1 | ProductA | FileA | +----------+-------------+-----------+ | 1 | ProductA | FileB | +----------+-------------+-----------+ | 2 | ProductB | FileC | +----------+-------------+-----------+
我需要什么
+----------+-------------+---------+---------+ |ProductId | ProductName | Image1 | Image2 | +----------+-------------+---------+---------+ | 1 | ProductA | FileA | FileB | +----------+-------------+---------+---------+ | 2 | ProductB | FileC | | +----------+-------------+---------+---------+
答案 0 :(得分:0)
您无法使用显示数据的方式进行转动。无法为透视表提供动态列名称。正如Barmar所提到的,您需要编写一个排名函数,该函数将显示生产重复的动态值(例如“文件1”,“文件2”,“文件3”等)。这是一个过度复杂化。
如果您只需要将所有图像片段放入一行,请使用PM 77-1解决方案和group_concat。然后,您可以随后将其拆分为“,”。