挣扎与此,因为我不擅长与SQL和设计器不会与OVER使用工作。基本上,如果用户正在关注相关标签,则会获取主题列表。sql语法组由
我需要按T.TopicId
分组以阻止重复。如果用户选择与主题相关联的多个标签,它将列出该主题两次(每个标签一次)
当我在sql中添加一个组时,我得到了多个错误,并且我尝试了重新排列事物并且不能得到它的工作,如所说我用SQL语句无用
@id int = null
AS
SELECT
*
FROM
(SELECT
ROW_NUMBER()
OVER
(ORDER BY TopicOrder desc
,
(CASE
WHEN M.MessageCreationDate > T.TopicCreationDate THEN M.MessageCreationDate
ELSE T.TopicCreationDate
END) desc)
AS RowNumber
,T.TopicId, T.TopicTitle, T.TopicShortName, T.TopicDescription, T.TopicCreationDate, T.TopicViews, T.TopicReplies, T.UserId, T.TopicTags, T.TopicIsClose,
T.TopicOrder, T.LastMessageId, T.UserName, M.MessageCreationDate, M.UserId AS MessageUserId, MU.UserName AS MessageUserName, U.UserGroupId,
U.UserPhoto, T.UserFullName
FROM Tags INNER JOIN
TopicsComplete AS T ON T.TopicId = Tags.TopicId LEFT OUTER JOIN
Messages AS M ON M.TopicId = T.TopicId AND M.MessageId = T.LastMessageId AND M.Active = 1 LEFT OUTER JOIN
Users AS MU ON MU.UserId = M.UserId LEFT OUTER JOIN
Users AS U ON U.UserId = T.UserId LEFT OUTER JOIN
tagfollows AS TF ON @id = TF.userid
WHERE (Tags.Tag = TF.tag)
)T
如果有人能帮助它将不胜感激,谢谢! :)
看起来对你说你想要的方式太复杂了。顺便说一句,这是SQL服务器? – 2013-03-23 15:45:27
是的,这段代码工作正常。我只是想把这个小组放在哪里,但是然后它抱怨说所有的T.'s在一个聚合函数或小组中出现了 – mxadam 2013-03-23 15:51:45
您可以将连接转换为'tagfollows'到一个'EXISTS'子查询中。 – 2013-03-23 16:02:37