如何从当前 MySQL 数据库中查询和重新组织数据?
Posted
技术标签:
【中文标题】如何从当前 MySQL 数据库中查询和重新组织数据?【英文标题】:How to Query & re-organize Data from current MySQL database? 【发布时间】:2015-08-06 16:25:59 【问题描述】:我有以下数据库结构:
而里面存储的数据如下:
但是,我喜欢从database
中选择以下格式的数据:
如何使用一个SELECT
语句来实现这一点?如果不能使用单个SELECT
语句,如何通过sql
代码实现这一点?有人可以给我实现吗?
【问题讨论】:
有多少种不同的m1-t1,m1-t2...
是可能的,使用 sql 不能完全按照您列出的方式完成,但可以在一定程度上实现。
@AbhikChakraborty, m1-t1, m1-t2...
不是固定长度。例如,它可能是m1-t1, m1-t2, m1-t3, m2-t1, m2-t2, m3-t1
。我要的表应该由m
组织。
您想要的结果不过是数据透视,对于已知的项目集很容易,但是在您的情况下,您需要动态 sql 来实现它。检查 mysql 动态数据透视表。
x_value
也不限制或固定为 0、10 和 20?
@DangeMask,是的,为了简化问题,我们假设它们首先固定为0, 10, 20
。
【参考方案1】:
我可以使用一个 SELECT 语句来实现吗?
是的,你可以。您将不得不对JOIN
和GROUP BY
语句进行一些操作,但可以实现。
编辑:
让我们尝试多个JOIN
语句:
Select sum.name, x0.y_value, x10.y_value, x20.y_value
from test_summary as sum
join test_details as x0 on sum.id=x0.id and x0.x_value=0
join test_details as x10 on sum.id=x10.id and x10.x_value=10
join test_details as x20 on sum.id=x20.id and x20.x_value=20
基于对multiple joins 和join with where clause 的回答
【讨论】:
你的问题是,如果它可以实现;-) 再看,它并不像我想象的那么容易。我会考虑一段时间并尝试找到解决方案。 请试试我的新建议。我对 MS SQL 比较熟悉,所以我希望我的语法是正确的。 您提供的解决方案仅适用于x_value
实例较小的情况。如果x_value
的范围为 0 到 100,第 10 步,0, 10, 20, 30, 40...90, 100
。这个SELECT
声明需要永远!
我问你是不是有限制。这就是原因。恐怕我的经验仅限于这个解决方案。
您也可以尝试在明细表上创建索引以加快搜索速度。但我不确定它是否会有很大帮助。【参考方案2】:
您喜欢的东西称为数据透视表,这超出了 mySQL 等关系数据库系统的范围。所以OLAP有很多特殊的平台。但是,如果您不需要任何全面的 OLAP 东西,而是使用 mySQL 和 php 生成一些数据透视表,则不需要任何特殊的 sql,但需要通过 php 编写此类演示文稿,可能使用一些商业框架,如 this 或一些开源code
【讨论】:
以上是关于如何从当前 MySQL 数据库中查询和重新组织数据?的主要内容,如果未能解决你的问题,请参考以下文章