1

我试图在项目表中创建派生属性可用性,为此我需要创建一个连接吗?

可用性 检查今天的日期是否在 checkoutDate 和 returndate 之间。

这是ER图:

在此处输入图像描述

4

2 回答 2

2

如果您想将其用作计算列,那么我建议使用 UDF。在您的图表中,您将可用性作为布尔值。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)

话虽如此,这可能更适合视图。

于 2013-02-21T02:27:05.067 回答
1

是的,您需要加入。

我建议您使用视图将来自不同表的数据放在一起。

于 2013-02-21T02:11:03.153 回答