获取2个表之间的最新记录

时间:2010-07-12 13:54:15

标签: sql sql-server-2008

这是question的延续。我整个周末都没有解决这个问题。我完全难过了。基本上,我继承了一个有趣的表结构。此表结构如下所示:

grouptable将

* ID
* Name
* Description

GroupItem

* ID
* GroupID
* Name
* CreatedBy
* CreationDate

OpenGroupItem

* ID
* GroupID
* Name
* CreatedBy
* CreationDate

我需要获取特定用户创建的三个最新的GroupItem元素。扭曲带来了与GroupID相关的需求。我检索的三个GroupItem元素必须至少有一个具有相同GroupID的其他GroupItem元素。第二个转折是组中的其他项可能在OpenGroupItem中。

换句话说,我正在尝试检索在组中至少有两个项目的三个最新的GroupTable。这些项可以在GroupItem或OpenGroupItem中。问题在于,至少有一个项目必须由特定用户创建。

我不知道如何在SQL中完成此任务。我正在使用SQL Server 2008而且我一直在做空。

1 个答案:

答案 0 :(得分:0)

我的第一个建议是修复你的数据库结构。这些都不需要在具有相同结构的两个表中。一个带有字段的表来指示它是否打开是一个更好的设计。为了避免破坏,您可以将表命名为new,然后为GroupItem(与该表命名相同)创建一个视图,为OpenGroupITem创建一个视图,根据您添加的onteh字段为每个记录选择所需的记录。如果您有这样的事情,您还需要更改将记录从打开状态移动到未打开状态的过程。

一旦完成,查询数据是微不足道的。

如果你不能这样做,最好的解决方案是将两个表一起UNION ALL然后再查询。如果您经常需要执行此类查询,请将UNOIN ALL视图。如果这是罕见的情况,请将其设为派生表或CTE或临时表。