我试图在项目表中创建派生属性可用性,为了做到这一点,我需要创建一个连接吗?
可用性检查今天的日期是否在checkoutDate和Returndate之间。
这是ER图:
答案 0 :(得分:2)
如果要将其用作计算列,那么我建议使用UDF。在您的图表中,您将Availability作为布尔值。 SQL Server没有布尔数据类型,所以我假设你有点意思。这应该非常接近,但你需要测试它:
CREATE FUNCTION dbo.GetValue
(
@barcode int
)
RETURNS bit
AS
BEGIN
DECLARE @field bit
SELECT @field = CASE WHEN GETDATE()
BETWEEN L.LastReturnDate AND R.ReturnDate THEN 1 ELSE 0 END
FROM [Item] I
JOIN [Load] L ON I.barcode = L.barcode
JOIN [Return] R ON I.barcode = R.barcode
WHERE I.barcode = @barcode
RETURN @field
END
GO
然后将其用作计算列:
ALTER TABLE dbo.Item
ADD Availability AS dbo.GetValue(barcode)
话虽如此,这可能更适合于View。
答案 1 :(得分:1)
是的,你需要加入。
我建议您使用视图将来自不同表的数据放在一起。