gpt4 book ai didi

mysql 列名和字段值作为行

转载 作者:行者123 更新时间:2023-11-29 23:50:38 25 4
gpt4 key购买 nike

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

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

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

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

其他产品存储在其他行中。我们需要使用 ProductID 检索其中一行,然后创建类似于第一个示例中的表的 sql 输出。我读过一些关于“旋转”的帖子,但我不确定这正是我们需要做的。

有人可以指点一下吗?

最佳答案

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

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

看看这个 SQL Fiddle示例。

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

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

因此,如果您从 Products 表中删除一行,则 Slices 表中与该 ProductID 相关的数据也将被删除。已删除。此外,如果您要更新 Products 表中的 ProductID,那么此更改也会级联到 Slices 表。

现在,要获取所需格式的数据,您可以直接使用 ProductIDSlicesSELECT 或使用 SQL 语句使用 INNER JOIN 到基于 Products 表中另一列的 SELECT,例如

SELECT SliceName, SliceValue
FROM Slices s
INNER JOIN Products p ON s.ProductID = p.ProductID
WHERE ProductName = "widget"

像这样将切片存储在单独的表中会更高效并提供灵 active ;除非每种产品的切片数量始终固定。

关于mysql 列名和字段值作为行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25676094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com