我正在尝试提供一个使用sql查询的数据可视化程序。为了创建饼图,它希望输入看起来如下:
+--+-----+-----+-----+
|SliceName|SliceValue
+--+-----+-----+-----+
|Slice 1 |1
+--+-----+-----+-----+
|Slice 2 |5
+--+-----+-----+-----+
我们的产品数据存储在如下表格中:
+--+-----+-----+-----+
|ProductID|Slice 1 | Slice 2
+--+-----+-----+-----+
|123 |1 |5
+--+-----+-----+-----+
其他产品存储在其他行上。我们需要使用ProductID检索其中一行,然后创建sql输出,它看起来像第一个示例中的表。我已经阅读了一些关于“旋转”的帖子,但我不确定这正是我们在这里需要做的。
有人可以提供一些指示吗?
答案 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
将切片存储在这样的单独表格中会更有效并提供灵活性;除非你的每件产品都有固定数量的切片。