mysql列名和字段值为行

时间:2014-09-04 22:43:12

标签: mysql row pie-chart

我正在尝试提供一个使用sql查询的数据可视化程序。为了创建饼图,它希望输入看起来如下:

+--+-----+-----+-----+
|SliceName|SliceValue
+--+-----+-----+-----+
|Slice 1  |1
+--+-----+-----+-----+
|Slice 2  |5
+--+-----+-----+-----+

我们的产品数据存储在如下表格中:

+--+-----+-----+-----+
|ProductID|Slice 1 | Slice 2
+--+-----+-----+-----+
|123      |1       |5
+--+-----+-----+-----+

其他产品存储在其他行上。我们需要使用ProductID检索其中一行,然后创建sql输出,它看起来像第一个示例中的表。我已经阅读了一些关于“旋转”的帖子,但我不确定这正是我们在这里需要做的。

有人可以提供一些指示吗?

1 个答案:

答案 0 :(得分:0)

是否可以更改数据库架构(您是否有兴趣这样做)?您可以通过查看数据规范化和数据库中的关系来解决您的问题。

我会从产品表中获取与切片相关的信息,并将其放入名为切片的新表中。

看看这个SQL Fiddle示例。

你会看到我在切片表中创建了一个FK:

FOREIGN KEY (ProductID) REFERENCES Products(ProductID)
    ON DELETE CASCADE
    ON UPDATE CASCADE

因此,如果您从产品表中删除一行,则切片表中与该ProductID相关的数据也将被删除。此外,如果您要更新产品表中的ProductID,则此更改也会级联到切片表。

现在要以您想要的格式获取数据,您可以使用SELECT直接使用切片 ProductID或使用带有{{1}的SQL语句} INNER JOIN基于产品表格中的其他列,例如

SELECT

将切片存储在这样的单独表格中会更有效并提供灵活性;除非你的每件产品都有固定数量的切片。