Sql 使用2个表获取计数的存储过程
我第一次尝试编写一个复杂的存储过程。我的目标是从两个表中获得具有某些条件的计数 考虑商户表和电子邮件表。 电子邮件表保存商户发送的电子邮件邀请。商户表包含所有商户信息以及电子邮件ID。 我的目标是通过检查商户发送的电子邮件邀请是否已注册来获取商户表中的电子邮件ID数量 我试图把这个问题说清楚。。。希望我清楚Sql 使用2个表获取计数的存储过程,sql,Sql,我第一次尝试编写一个复杂的存储过程。我的目标是从两个表中获得具有某些条件的计数 考虑商户表和电子邮件表。 电子邮件表保存商户发送的电子邮件邀请。商户表包含所有商户信息以及电子邮件ID。 我的目标是通过检查商户发送的电子邮件邀请是否已注册来获取商户表中的电子邮件ID数量 我试图把这个问题说清楚。。。希望我清楚 提前谢谢 为什么使用存储过程?听起来它可以在一个SQL查询中完成 让我们看看我是否正确理解了你的问题:商家也邀请其他人成为商家,你想要一个列表,列出每个商家接受的邀请数量 大致如下: sel
提前谢谢 为什么使用存储过程?听起来它可以在一个SQL查询中完成 让我们看看我是否正确理解了你的问题:商家也邀请其他人成为商家,你想要一个列表,列出每个商家接受的邀请数量 大致如下:
select MerchantName, count(1)
from Merchants, Emails
where Merchants.Id = Emails.Id
and Emails.SignedUp = 'YES!'
group by MerchantName;
听起来你描述的模式有些混乱。基于我认为您正在尝试做的事情,我建议您有一个商户表、一个电子邮件表和一个MerchantEmail表,用于将商户链接到发送的电子邮件邀请 对于具有电子邮件ID的商户表,其显示方式是多对一关系,以便多个商户可以成为电子邮件的收件人。在这种情况下,注册标志将出现在商家表中,而不是电子邮件表中
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
- 请注意,上面有一些冗余,这表明您甚至不需要在查询中包含电子邮件表。在这里,它仅用于指示外键关系