我几乎完成了我的第一个任务,但最后一个问题让我很难过。
它问:
生成故障产品报告,显示 2010 年 11 月 7 日因外部损坏而退回的产品
预期的输出是:
有缺陷的产品报告
--------------------------------------
产品名称:办公桌
客户名称:Simon, Kernel
原因:外部损坏
(1 行受影响)
---报告结束---
我现在发现了 SQL,PRINT
我似乎几乎把它全部归结为 T:
DECLARE @ProductName varchar(30)
SET @ProductName =(SELECT MIN(Products.ProductName) FROM Products)
DECLARE @CustomerName varchar(75)
SET @CustomerName =(SELECT MIN(Customers.FirstName+', '+Customers.Surname)
FROM Customers,CustomerReturns,Products
WHERE CustomerReturns.ReturnDate='2012/07/11'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID)
DECLARE @Reason varchar(30)
SET @Reason =(SELECT MIN(CustomerReturns.Reason)
FROM CustomerReturns,Products,Customers
WHERE CustomerReturns.Reason='Damaged Exterior')
PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
PRINT '';
PRINT '---END OF REPORT---';
我的输出:
有缺陷的产品报告
--------------------------------------
产品名称:办公桌
客户名称:Simon, Kernel
原因:外部损坏
---报告结束---
如您所见,我仍然缺少:
(1 行受影响)
我怎样才能让它看起来没有当然作弊和只是打印它?(因为无论返回多少结果,它都会保持不变)
编辑:
我发现这样做:SELECT @ProductName...
产生受影响的 1row(s),这是正确的吗?:
PRINT 'FAULTY PRODUCT REPORT';
PRINT '';
PRINT '---------------------';
PRINT 'Product Name: '+@ProductName;
PRINT 'Customer Name: '+@CustomerName;
PRINT 'Reason: '+@Reason;
SELECT @ProductName,@CustomerName,@Reason
PRINT '';
PRINT '---END OF REPORT---';
EIDT2:
将其更改为:
DECLARE @PName varchar(35)
DECLARE @CName varchar(75)
DECLARE @RName varchar(75)
SELECT @PName=Products.ProductName,
@CName=Customers.FirstName+', '+Customers.Surname ,
@RName=CustomerReturns.Reason
FROM Products,Customers,CustomerReturns
WHERE CustomerReturns.ReturnDate='2012/09/28'
AND CustomerReturns.Reason='Damaged Exterior'
AND Products.ProductID=CustomerReturns.ProductID
AND Customers.CustomerID=CustomerReturns.CustomerID
PRINT @PName
PRINT @CName
PRINT @RName
但仍然不影响行的东西
感谢您的帮助