大家好我寫了下面的查詢結果從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