在需要简单存储过程的大学项目过程中:
创建一个存储过程,该过程接受一个接受Date的参数。 Date的数据类型将是datetime。此存储过程应返回该日期发生的查看的所有租用者和属性信息。
它将在大学的SQL Server上提交,但目前在家我正在使用MS Access 2010进行培训。
表= Property_For_Rent
:
Pno \\( this is the property ID )
Address_1
Address_2
Address_3
表= Renter
Rno \\( this is the renter ID )
Fname
Lname
表= Viewing
Rno
Pno
Date
研究发现这里有另外一个类似难题的人(更容易调整,如果有人可以发光,哪里出错了,谢谢!
create procedure sp_orders_by_dates
@startdate smalldatetime,
@enddate smalldatetime
as
select
OrderID,
o.CustomerID,
c.CompanyName as CustomerCompany,
s.ShipperID,
s.CompanyName as ShipperCompany,
ShippedDate
from
Orders o
join
Customers c on o.CustomerID = c.CustomerID
join
Shippers s on s.ShipperID = o.ShipperID
where
@startdate = ShippedDate,
@enddate = ShippedDate
order by
ShippedDate
答案 0 :(得分:1)
我不明白。
您描述的表格甚至没有在存储过程中提及
你期望它如何运作?
您应该在所有3个表格上使用INNER JOIN
,并将表格Date
上的Viewing
列与@Date
子句中的WHERE
变量进行比较。<登记/>
基本上,它应该看起来像这样:
SELECT *
FROM Table1 T1
INNER JOIN Table2 T2 ON(T1.JoinColumn = T2.JoinColumn)
INNER JOIN Table3 T3 ON(T2.OtherJoinColumn = T3.JoinColumn)
WHERE Table3.ConditionColumn = @Date
现在你要做的就是弄清楚如何使你的表和列适应sql语句而不是我的模型。
祝你好运。
答案 1 :(得分:0)
SQL实现不一样。他们并非都使用完全相同的语法,并且他们并没有全部实现完全相同的东西。例如,MS-Access(据我所知)根本不提供存储过程。 (但它确实知道如何向做的适当服务器发出查询和DML命令。)
例如,“SQL Server!” :-) Microsoft 免费提供“SQL Server Express”, (大部分......)SQL Server,专为在一台机器上使用而设计。使用此工具,您应该能够复制几乎与实验室中预期使用的环境相同的环境。当然,MS-Access是一个非常好的工具,用于“访问”你所做的事情。
答案 2 :(得分:0)
由于您使用的是datetime数据类型,因此必须考虑时间。
where shippedDate >= @dateParameter
and shippedDate < DateAdd(day, 1, @dateParameter)
在处理包含日期和时间的数据类型时,习惯这种方法。