我正在尝试返回已租用特定电影的特定州的客户数量,其中租户表包含两列,一列用于客户ID,另一列用于电影ID.该函数接受电影ID和状态,并返回一个包含客户数量的整数.
现在我有一个实现,但它会计算整个查询返回的行数:
SELECT COUNT(*) as numCustomers FROM CUSTOMER C, RENTS R WHERE C.ST = '" + state + "' AND R.mid = " + movieID
然后我算出行数.我想能够检查numCustomers的正确数据.谢谢!
首先,您缺少一个链接您的RENTS表和CustomerId上的CUSTOMER表的子句?
其次,您应该使用FROM子句中的INNER JOIN功能来添加两个表.
第三,你不应该将你的sql构建为这样的字符串,因为你将对SQL注入开放.
猜测,您可能会遇到的SQL类型如下.
DECLARE @movieId int DECLARE @state varchar(2) SET @movieId = 12345 SET @state = 'NY' SELECT COUNT(DISTINCT C.CustomerID) as numCustomers FROM CUSTOMER C INNER JOIN RENTS R ON C.CustomerID = R.CustomerId WHERE C.ST = @state AND R.mid = @movieId