ここには非常に複雑なクエリがあります。ここで必要なテーブルの概要を説明します。
- RPG
- RPGキャラクター
- RPGポスト
- ユーザー
RPG ごとに X Chars、Char ごとに x Posts があります。1 ユーザーは X 文字を持つことができますが、1 文字は 1 ユーザーにのみ依存します。
私が欲しいのは、これを書いたユーザー名、キャラクター、RPG 自体、および RPG ごとの RPGPosts の数 (合計) に関する情報の中で、RPG ごとの最後の投稿を取得したクエリです。
これは私が今までそれを解決した方法です:
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) キャラクターごとの最後の投稿が表示されますが、RPG ごとの最後の投稿が必要です