【问题标题】:inserting data into a table that has a many to many relationship将数据插入到具有多对多关系的表中
【发布时间】:2013-07-20 00:44:30
【问题描述】:

我正在处理一项任务,需要您在 SQL 数据库中的以下方面提供帮助:-

我有 3 张桌子

  1. 产品
  2. LintItem
  3. 发票

LineItem 是一个新娘表,我需要将数据插入 LineItem,但它需要 ProductID 和 InvoiceNumber。 在我的例子中,Invoice 表是空的,它将由 LineItem 表传递的数据填充。

问题是如何在获取 lineItem 表中的数据之前创建发票?

我正在将这些表用于在线购物车。

我真的很难解释这个问题。希望您能理解,谢谢!

【问题讨论】:

  • 怎么插入,你的数据来源是什么?
  • 问题是我要插入 Invoice 表的数据将来自 LineItem 表。例如,ItemPrice*Qantity 获取小计等。
  • 数据来自购物页面。如果用户点击添加项目,那么这将被添加到 LineItem 表中,如果用户签出,那么我会将数据插入到 Invoice 表中。
  • 因为...我真的很难解释这个问题...至少edit你的问题并添加你的表模式、示例数据和期望的结果

标签: mysql sql sql-server


【解决方案1】:

听起来您有一个外键约束,在插入您的行项目记录之前强制存在发票记录。根据您问题的措辞,很难确切地说出来,但可能是这样的。

--用于保存行项目的表变量 声明@lineItems 表 ( 发票号 INT, 数量 INT )

插入@lineitems VALUES(1,1) 插入@lineitems VALUES(1,2)

--首先添加发票记录和数量等...... 插入发票 选择发票号码,总和(数量) 来自@lineItems 按发票编号分组

--现在您可以添加订单项了 插入到 LineItems SELECT * FROM @lineItems

如果这是你的目标,这是你可以使用的模式。

如果您想在用户单击网页中的“添加”时即时插入这些 LineItem。我不会以这种方式使用您的 LineItem SQL 表进行缓存。在不了解您的应用程序的情况下很难说,但您确实应该在 HTTP 会话或客户端中将此数据缓存为(数组、json、本地存储等)。如果您选择将其作为 SQL 表执行,只需创建一个没有约束的新 LineItem,然后按照上述类似方式,您可以使用该表插入到您的 LineItem 表中。

【讨论】:

  • 感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2013-01-12
  • 2015-03-29
  • 2021-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-11
相关资源
最近更新 更多