2014-05-22 115 views
0

我想缩短我的存储过程,我有一种感觉,我可以使用一个而不是两个。加入两个表可以将两个存储过程合并成一个SQL

第一个表(dbo.Table1)有:

ProductID, DiscountID 

,第二个表(dbo.Table2)有:

Description, DiscountAmount and DiscountID 

我试图得到折扣金额,而我有的只是产品ID。目前我正在使用存储过程调用discountID的第一个表。然后在第二个存储过程中使用discountID从第二个表中获取DiscountAmount

是否有办法将这两个存储过程结合起来,以便我可以使用productID在一个过程中获得DiscountAmount

+0

只是一个侧面一句话:这看起来很奇怪,看看折扣金额,而不是在表2的折扣百分比。 “计算机10%折扣”比“计算机50美元折扣”更典型。但是,对于多个产品,您确实使用一种折扣,是的? (我在问,因为当存在1:1关系而不是1:n时,有一个单独的折扣表是没有意义的。) –

回答

0

你的意思是这样的吗?

SELECT t2.DiscountAmount 
FROM Table2 t2 inner join Table1 t1 
on t2.DiscountID = t2.DiscountID 
WHERE t1.ProductID = @ProductId 

这里的Fiddle

+0

请限制使用内联代码格式(即反引号)来事实上是代码(如关键字和标识符)。在这里,你已经让Fiddle看起来像是代码,当它真的只是一个外部网站的链接。我翻阅了一些最近的编辑,并且在那里做了同样的事情。像[这一个](http://stackoverflow.com/posts/23828424/revisions)。 '检查文档'显然不是代码,所以它不应该被格式化。如果您*需要*强调某些内容,请使用粗体或斜体。但要小心过度重视! –

+0

@CodyGray,公平点,我做帐篷来突出显示 - 我将编辑我的帖子。 – christiandev

0

你有一个存储过程,并没有别的比

select discountid from table1 where productid = @productid; 

和另一只做

select discountamount from table2 where discountid = @discountid; 

这看起来有点过大的给我; - )

但是,是的,你当然可以结合两种说法:

select discountamount from table2 where discountid = 
    (select discountid from table1 where productid = @productid);