0

在我正在开发的应用程序中,需要保存用户输入的搜索条件,并定期(例如每天)运行,以便将结果发送给用户。此外,在每次运行中,都会更新标准记录以指示最新的执行时间以及自上次以来发现的新结果的数量。
搜索是针对名为 Things 的表执行的,该表与 Colors 和 Kinds 表具有多对多关系,分别使用 ThingColors 和 ThingKinds 关系表。每个事物必须与至少一种颜色和一种种类相关联,并且它必须具有名称和速率。

Things                  Colors          Kinds           ThingColors       ThingKinds
------                  ------          -----           -----------       ----------
ThingId: int            ColorId: int    KindId: int     ThingId: int      ThingId: int
ThingName: varchar      Name: varchar   Name: varchar   ColorId: int      KindId: int
Description: varchar
Rate: int
AddedOn: datetime

已保存条件的表如下所示。Criteria 也与 Colors 和 Kinds 有多对多的关系。搜索条件(MinRate、MaxRate、Color 和 Kind)都不是强制性的,但至少必须指定一个。如果在搜索条件中指定了一种或多种颜色,则事物中必须至少有一种匹配的颜色,才能将其包含在结果中。相同类型的条件适用于 Kind。

Criteria                    CriteriaColors         CriteriaKinds
--------                    --------------         -------------
CriteriaId: int             CriteriaId: int        CriteriaId: int
UserId: int                 ColorId: int           KindId: int
CriteriaName: varchar
MinRate: int
MaxRate: int
NewResults: int
LatestRanOn: datetime

我正在寻找一个有效的查询来生成结果(针对每个条件的匹配事物列表)。有没有办法在同一个查询中使用新找到的匹配项(在条件的LatestRanOn 之后有AddedOn 的事物)更新Criteria,并更新LatestRanOn?

目前我正在使用 SQL Server 2008。

4

0 回答 0