大家好我写了下面的查询结果从3个表(合并tblQuestions,tblReplies,tblTechnology
和如下与SQL子查询
SELECT tech.DatePosted,
tech.QuestionID,
tech.TechnologyName,
tblr3.TechID,
tblr3.QuestionTitle,
tblr3.UserName,
tblr3.ReplyCount,
tblr3.viewCount,
tblr3.date,
tblr3.RepliedName
FROM (SELECT tblr1.DatePosted,
tblr1.QuestionID,
tblr2.TechID,
tblr2.QuestionTitle,
tblr2.UserName,
tblr2.ReplyCount,
tblr2.viewCount,
tblr1.date,
tblr1.RepliedName
FROM (SELECT tblq.DatePosted,
tblq.TechID,
tblq.QuestionID,
tblq.RepliedName,
tblq.QuestionTitle,
tblq.UserName,
tblq.ReplyCount,
tblq.viewCount,
tblq.date
FROM (SELECT q.DatePosted,
q.TechID,
q.QuestionID,
q.QuestionTitle,
q.UserName,
q.ReplyCount,
q.viewCount,
r.date,
r.UserName AS RepliedName
FROM tblQuestions AS q, tblReplies AS r
WHERE r.QuestionID = q.QuestionID
AND r.TechID = q.TechID
AND q.TechID = 1) AS tblq,
(SELECT r.QuestionID,
max(r.date) AS PostedDate
FROM tblReplies AS r
GROUP BY QuestionID) AS tblr
WHERE tblq.QuestionID = tblr.QuestionID
AND tblq.date = tblr.PostedDate) AS tblr1
RIGHT OUTER JOIN
(SELECT q.QuestionID,
q.TechID,
q.UserName,
q.viewCount,
q.ReplyCount,
q.QuestionTitle
FROM tblQuestions AS q
WHERE q.TechID = 1) AS tblr2
ON tblr2.QuestionID = tblr1.QuestionID) AS tblr3
LEFT OUTER JOIN
(SELECT q.QuestionID,
q.DatePosted,
t.TechID,
t.TechName AS TechnologyName
FROM tblTechnology AS t, tblQuestions AS q
WHERE q.TechID = t.TechID) AS tech
ON tblr3.TechID = tech.TechID
AND tblr3.QuestionID = tech.QuestionID
AND tech.TechID = 1
这给了我下面的结果如预期,但得到NULL
显示所需要的结果的SQL查询在某些领域,其中数据为存在
代替的NULL
我需要拉出一些数据,其存在于tblQuestions
,也是否有可能减少查询。
从OP的评论:
我试图用replycount and viewcount
沿拉出第q uestiontitle,username,questionid from tblquestions
和张贴基于QuestionID
和技术的ID问题,从tblreplys
你想用这个查询来实现什么?您的查询不容易,难以猜测。你能发布样本数据和预期结果吗?可能有更简单的方法来返回预期的结果,而不是使用如此多的子查询 – 2013-02-12 14:18:07
'rs',您可以检查我的图像以获取我想要实现的内容 – Dotnet 2013-02-12 14:20:42
您的图像显示预期数据,但不包含任何业务逻辑或条件。解释你的问题以及你试图用这个查询来达到的目标。 – 2013-02-12 14:22:31