我第一次尝试编写复杂的存储过程。我的目标是从2个表中得到一些条件。
考虑商家表和电子邮件表。 电子邮件表格保存商家发送的电子邮件邀请。商家信息表包含所有商家信息以及电子邮件ID。 我的目标是通过检查Merchant发送的电子邮件邀请是否已注册来获取Merchant表中的EmailID数量。
我试图明确这个问题......希望我很清楚。
提前致谢..
答案 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