C# Hello需要有关如何在论坛主题/消息的SQL Server新闻中执行此操作的帮助吗
好的,我有三张桌子可以互相交流C# Hello需要有关如何在论坛主题/消息的SQL Server新闻中执行此操作的帮助吗,c#,asp.net,sql-server,C#,Asp.net,Sql Server,好的,我有三张桌子可以互相交流 ForumTopic t ForumMessage m ForumUser u 我想做的是得到每个主题的第一条信息 我试过这个 SELECT m.[Message], m.[TopicID], m.[Posted], u.Name, t.[Views], t.NumPosts, t.Topic FROM [ForumMessage] m INNER JOIN ( SELECT TopicID, Topic, [Views], NumP
ForumTopic t
ForumMessage m
ForumUser u
我想做的是得到每个主题的第一条信息
我试过这个
SELECT
m.[Message], m.[TopicID], m.[Posted], u.Name, t.[Views], t.NumPosts,
t.Topic
FROM [ForumMessage] m
INNER JOIN ( SELECT TopicID, Topic, [Views], NumPosts, ForumID
FROM [ForumTopic]
GROUP BY TopicID, Topic, [Views], NumPosts, ForumID ) t ON t.TopicID = m.TopicID
INNER JOIN [ForumUser] u
ON u.UserID = m.UserID
WHERE t.ForumID IN(1,2)
ORDER BY m.Posted DESC;
结果如下所示
Message TopicID Posted Name Views NumPosts Topic
6 2009-07-20 18:14:06.270 Ravenal 26 3 GENESIS 2.5.1a RELEASE
6 2009-07-20 18:08:51.027 Ryan 26 3 GENESIS 2.5.1a RELEASE
6 2009-07-20 17:06:33.550 Ravenal 26 3 GENESIS 2.5.1a RELEASE
4 2009-07-17 14:22:47.560 Ravenal 14 1 MyGameTools IRC
3 2009-07-17 01:09:22.403 Ravenal 43 1 GENESIS 2.5.0b RELEASE
2 2009-07-17 00:48:30.873 Ravenal 44 2 GENESIS 2.5.0a RELEASE
2 2009-07-16 23:08:44.830 Ravenal 44 2 GENESIS 2.5.0a RELEASE
1 2009-07-16 23:03:11.790 Ravenal 20 1 Welcome to MyGameTools
所以我想弄清楚如何让它看起来像这样
Message TopicID Posted Name Views NumPosts Topic
6 2009-07-20 18:14:06.270 Ravenal 26 3 GENESIS 2.5.1a RELEASE
4 2009-07-17 14:22:47.560 Ravenal 14 1 MyGameTools IRC
3 2009-07-17 01:09:22.403 Ravenal 43 1 GENESIS 2.5.0b RELEASE
1 2009-07-16 23:03:11.790 Ravenal 20 1 Welcome to MyGameTools
任何帮助都将不胜感激。它为一条消息提供了多条记录,因为您正在将其与用户表连接&消息有多个用户(主题4、3、1除外)
编辑:您必须通过限制提供1条记录(按最大值(PostedDateTime))来减少外部查询的输出。您是否尝试使用派生表从ForumMessages表中获取每个主题的最大发布日期时间 乙二醇
为那些可能会做我正在做的同样事情的人提供参考…这是在Darren的帮助下,我对结果的解决方案
SELECT m.[Message], m.[TopicID], m.[Posted], u.Name, t.[Views], t.NumPosts, t.Topic FROM
( SELECT TopicID, Min(Posted) MaxPosted
FROM ForumMessage
GROUP BY TopicID ) MaxMessage
INNER JOIN [ForumMessage] m
ON m.TopicID = maxMessage.TopicID
AND m.Posted = maxMessage.MaxPosted
INNER JOIN [ForumTopic] t
ON t.TopicID = m.TopicID
INNER JOIN [ForumUser] u
ON u.UserID = m.UserID
WHERE t.ForumID IN(1,2)
ORDER BY m.[Posted] DESC
实际上,用户与此无关…他们都是由一个人发布的,除了另一个人。Ravenal=Me,Ryan是在主题#6中发布的人…我试图做的事情是按ForumMessage的TopicID分组。在MySQL中,我可以很容易地做到这一点,但在MSSQL的TopicID a date列中这样做时,我会迷失方向(至少看起来是这样)?发布的是varchar列吗?No TopicID是一个整数唯一标识列:)与MessageId相同很高兴问题得到解决。我想格式设置会让它看起来有点奇怪。这非常有效,伙计,谢谢…我只需要修改它以显示第一篇文章,而不是其他类似的内容
SELECT m.[Message], m.[TopicID], m.[Posted], u.Name, t.[Views], t.NumPosts, t.Topic FROM
( SELECT TopicID, Min(Posted) MaxPosted
FROM ForumMessage
GROUP BY TopicID ) MaxMessage
INNER JOIN [ForumMessage] m
ON m.TopicID = maxMessage.TopicID
AND m.Posted = maxMessage.MaxPosted
INNER JOIN [ForumTopic] t
ON t.TopicID = m.TopicID
INNER JOIN [ForumUser] u
ON u.UserID = m.UserID
WHERE t.ForumID IN(1,2)
ORDER BY m.[Posted] DESC