Mysql 将行值扩展为单个行

Mysql 将行值扩展为单个行,mysql,sql,join,Mysql,Sql,Join,我需要一些关于SQL查询的帮助。我知道这应该重新设计,但这是我在一个更大的系统上做的一个小修复: 系统有一个名为sales的表,其中包含已售出的零件 id | date | idpart 1 |unixtime| 227 2 |unixtime| 256 等等 在包含订单内容的Orderdetails表中,零件按id列出,并按客户订购的唯一零件的数量列出 id |idpart | amount 1 | 255 | 4 2 | 265 | 2 现在,我的问题

我需要一些关于SQL查询的帮助。我知道这应该重新设计,但这是我在一个更大的系统上做的一个小修复:

系统有一个名为sales的表,其中包含已售出的零件

id  | date   | idpart
1   |unixtime|   227
2   |unixtime|   256 
等等

在包含订单内容的Orderdetails表中,零件按id列出,并按客户订购的唯一零件的数量列出

id |idpart | amount
1  | 255   | 4
2  | 265   | 2
现在,我的问题是,我必须运行一个查询来填充sales表,但将idpart添加为新行的次数与零件的amountvalue顺序相同。 我需要的结果是:

id  | date   | idpart
1   |unixtime|   227
2   |unixtime|   256 

3   |unixtime|   255
4   |unixtime|   255
5   |unixtime|   255
6   |unixtime|   255
7   |unixtime|   265
8   |unixtime|   265

有谁能帮我解决这个问题吗?

如果你有一张有数字的桌子,这很容易。您可以这样做:

select id, date, idpart
from sales
union all
select id, date, idpart
from orders o cross
     numbers n
     on n.number <= o.amount
这是假设日期来自orders表

现在,您只需要生成数字表。这是MySQL中的一个难题。也许您可以使用另一个表,例如日历表。否则,可以通过插入具有自动增量列的表来创建一个


在其他数据库中,可以使用row_number函数动态创建这样的表。但是MySQL不支持这一点。

他们需要在销售表中一次性列出每个部件。系统就是这样设计的,一些运行在销售报表之上的报表必须具有这种格式的数据你不能从应用程序中执行复制逻辑吗?我还不能访问应用程序的该部分。早些时候,他们在sales表中也有amount列。但是由于某种原因,他们把它拿走了,现在它停止工作了。。谁会相信!!我要说的是,说服团队处理应用程序逻辑来处理它,从应用程序中进行操作会更容易、更快。是的,我同意你的观点。问题是这可能需要几个星期。我只需要为分析师生成销售表。现在我需要将Orderdetails中的60K行填充到sales中:这种SQL不是我的强项,因此我非常希望您能就如何解决它提供指导…谢谢您的回答。不幸的是,order表中不存在date:据我所知,UNION运算符要求用于UNION的表上的列集相同。。