Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用2个表获取计数的存储过程_Sql - Fatal编程技术网

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

Sql 使用2个表获取计数的存储过程,sql,Sql,我第一次尝试编写一个复杂的存储过程。我的目标是从两个表中获得具有某些条件的计数 考虑商户表和电子邮件表。 电子邮件表保存商户发送的电子邮件邀请。商户表包含所有商户信息以及电子邮件ID。 我的目标是通过检查商户发送的电子邮件邀请是否已注册来获取商户表中的电子邮件ID数量 我试图把这个问题说清楚。。。希望我清楚 提前谢谢 为什么使用存储过程?听起来它可以在一个SQL查询中完成 让我们看看我是否正确理解了你的问题:商家也邀请其他人成为商家,你想要一个列表,列出每个商家接受的邀请数量 大致如下: sel

我第一次尝试编写一个复杂的存储过程。我的目标是从两个表中获得具有某些条件的计数

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

我试图把这个问题说清楚。。。希望我清楚


提前谢谢

为什么使用存储过程?听起来它可以在一个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
  • 请注意,上面有一些冗余,这表明您甚至不需要在查询中包含电子邮件表。在这里,它仅用于指示外键关系

您使用的是什么数据库?这个程序对它计算的这些计数有什么作用?您是否需要一个存储函数来将它们返回给调用方?@RedFilter:我没有模式。我只是在学习:(sql 2005是一个平台。它只会显示许多商家在收到邀请后注册的数量。太棒了,马丁!!你太棒了:)当然,特别是他在查询中有数量(1)的部分