涉及具有多对多关系的表的SQL查询

时间:2012-12-30 23:19:54

标签: sql many-to-many

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

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还有与色彩和种类的多对多关系。搜索条件(MinRate,MaxRate,Color和Kind)都不是必需的,但必须至少指定一个。如果在搜索条件中指定了一个或多个颜色,则Thing中必须至少有一个匹配的颜色,以便它可以包含在结果中。同一类型的条件适用于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

我正在寻找一个有效的查询来生成结果(根据每个标准匹配的事物列表)。有没有办法用新发现的匹配项(在CritR的LatestRanOn之后添加了AddOn的东西)更新Criteria,并在同一个查询中更新LatestRanOn?

目前我正在使用SQL Server 2008。

0 个答案:

没有答案
相关问题