【问题标题】:creating a stored procedure using columns from different tables使用来自不同表的列创建存储过程
【发布时间】:2013-04-11 09:21:37
【问题描述】:

我有 4 张桌子:customer(PK custId)order(PK orderID)orderitem(PK orderItemId)products(PK ProductID)

orderitem 表将 productID 和 OrderItemID 分别作为产品和订单的外键。

Orderitem:
-----------------------
orderID | productID | OrderItemID 



Products:
-------------------------------- 
productID | unitcost | OrderItem 

表格有数量列,

我想创建一个存储过程,它将使用 products 表中 unitcost 中的值和 orderItems 表中的数量来计算 orderItem 中的 totalcost 列。

如果可能的话,我怎样才能让程序中的orderID 来自Orders 表,因为它是orderItem 表的PK 和FK

【问题讨论】:

  • 你用的是什么关系型数据库?
  • 我使用的是sql server 2008 R2,感谢您对我的问题的关注

标签: sql stored-procedures


【解决方案1】:

如果我正确理解您的问题,您的存储过程的基本查询可能如下所示

SELECT i.*,
       p.unitcost * i.quantity totalcost
  FROM orderitem i INNER JOIN
       order o ON i.orderID = o.orderID INNER JOIN
       products p ON i.productID = p.ProductID
 WHERE i.orderID = 12345

如果您指定您使用的 RDMBS,那么它可以帮助您将其包装在 SP 中。

【讨论】:

  • 是的,没错。存储的过程是我的问题,因为在 orderItem 表中我只有 orderId 、 ProductId 和数量列。我正在使用 sql 2008 R2
  • 非常感谢彼得。我设法达到了这一点。我也确实在 orderItem 表中创建了 totalcost 列,但它当前具有空值,因此 sp 必须计算总值并将其插入该列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 2012-12-31
  • 2017-09-07
相关资源
最近更新 更多