【发布时间】:2013-11-04 11:50:04
【问题描述】:
我在这里有一个非常复杂的查询,我试着在这里给你一个关于必要表的概述:
- 角色扮演游戏
- RPG角色
- RPGPost
- 用户
每个角色扮演有 X 个字符,每个字符有 x 个帖子。 1 个用户可以拥有 X 个字符,但 1 个字符仅取决于 1 个用户。
我想要的是一个查询,其中我得到了每个 RPG 的最后一篇文章,其中包含关于写这篇文章的用户名、角色和 RPG 本身的信息,以及我们每个 RPG 有多少 RPGPosts(总数)的数字。
这是我到现在为止解决它的程度:
SELECT c.RPGID, c.Name, DateTime, r.Name, u.Username, t.count
FROM dbo.RPGCharacter c inner join
(
SELECT CharacterID,
MAX(DateTime) MaxDate
FROM RPGPost
GROUP BY CharacterID
) MaxDates ON c.RPGCharacterID = MaxDates.CharacterID
INNER JOIN RPGPost p ON MaxDates.CharacterID = p.CharacterID
AND MaxDates.MaxDate = p.DateTime
Inner join RPG r on c.RPGID = r.RPGID
Inner join [User] u on u.UserID = c.OwnerID
inner join (Select RPG.RPGID, Count(*) as Count from RPGPost
inner join RPGCharacter on RPGPost.CharacterID = RPGCharacter.RPGCharacterID
inner join RPG on RPG.RPGID = RPGCharacter.RPGID
where RPGPost.IsDeleted = 0
Group by RPG.RPGID) t on r.RPGID = t.RPGID
Order by DateTime desc
结果:http://abload.de/image.php?img=16iudw.jpg
这个查询给了我所有我想要的但有一个错误:
1) 它给了我每个角色的最后一篇文章,但我需要每个角色扮演游戏的最后一篇文章
【问题讨论】:
-
编辑问题,自己解决了一半,添加结果集
-
而这一次,您自己回答了这个问题,而不希望任何人患上潜在的致命疾病。
-
如果您花时间准备 sqlfiddle 而不是发布 SSMS 的屏幕截图,那就太好了
标签: sql sql-server-2008 greatest-n-per-group