使用2个表来获取计数的存储过程

时间:2010-11-12 14:14:01

标签: sql

我第一次尝试编写复杂的存储过程。我的目标是从2个表中得到一些条件。

考虑商家表和电子邮件表。 电子邮件表格保存商家发送的电子邮件邀请。商家信息表包含所有商家信息以及电子邮件ID。 我的目标是通过检查Merchant发送的电子邮件邀请是否已注册来获取Merchant表中的EmailID数量。

我试图明确这个问题......希望我很清楚。

提前致谢..

2 个答案:

答案 0 :(得分:1)

为什么存储过程?听起来它可以在单个SQL查询中完成。

让我们看看我是否正确理解了您的问题:商家也邀请其他人成为商家,您想要一个列表,其中包含每个商家接受的邀请数量?

沿着这些方向:

select MerchantName, count(1)
from Merchants, Emails
where Merchants.Id = Emails.Id
and Emails.SignedUp = 'YES!'
group by MerchantName;

答案 1 :(得分:0)

听起来你正在描述的模式中存在一些混乱。根据我的想法,我建议你有一个Merchant表,一个Email表和一个MerchantEmail表,它将商家链接到发送的电子邮件邀请。

对于具有电子邮件ID的商家表,它的显示方式是多对一关系,因此多个商家可能是电子邮件的收件人。在这种情况下,Signed Up标志将出现在Merchants表中,而不是出现在Email表中。

CREATE PROCEDURE GetMerchantsSignedUp
@EmailId INT
AS
SELECT COUNT(*) AS MerchantSignedUp
FROM Merchant, Email
WHERE Merchant.EmailId = Email.Id
AND Merchant.SignedUp = 1
AND Email.Id = @EmailId
  • 请注意,上面有一些冗余,表明您甚至不需要在查询中包含电子邮件表。这里它仅用于表示外键关系。