2016-03-07 138 views
3

我想將兩條sql語句合併成一條,但沒有成功。在一條SQL語句中加入多條select語句

我理想上喜歡將Ave​​rage查詢添加到第一個sql語句的列末尾。

首先聲明:

SELECT Modules.UserID, Module_Info.ModuleTitle, Modules.ModuleMarks, Modules.ExamMark, Modules.AssignmentMark, MarkClassification.MarkDescription 
FROM Module_Info 
INNER JOIN Modules ON Module_Info.ModuleID = Modules.ModuleID 
INNER JOIN MarkClassification ON Modules.MarkCodeDescription = MarkClassification.MarkId 
WHERE(Modules.UserID = '8') 

其次聲明:

SELECT AVG(Modules.ExamMark) AS Average  
FROM Module_Info  
INNER JOIN Modules ON Module_Info.ModuleID = Modules.ModuleID 
WHERE (Modules.ModuleID = '2') 
+0

如果您喜歡,請考慮遵循以下簡單的兩步操作步驟:1.如果您尚未這樣做,請提供適當的DDL(和/或sqlfiddle),以便我們可以更輕鬆地複製問題。 2.如果您還沒有這樣做,請提供與步驟1中提供的信息相對應的所需結果集。 – Strawberry

回答

3

您可以選擇使用子查詢,像這樣:

SELECT Modules.UserID, Module_Info.ModuleTitle, Modules.ModuleMarks, 
     Modules.ExamMark, Modules.AssignmentMark, MarkClassification.MarkDescription, 
     (SELECT AVG(Modules.ExamMark) 
     FROM Module_Info 
     INNER JOIN Modules ON Module_Info.ModuleID = Modules.ModuleID 
     WHERE (Modules.ModuleID = '2')) as Average 
FROM Module_Info 
INNER JOIN Modules 
ON Module_Info.ModuleID = Modules.ModuleID 
INNER JOIN MarkClassification 
ON Modules.MarkCodeDescription = MarkClassification.MarkId 
WHERE(Modules.UserID = '8') 
+0

感謝您的回答,當我運行查詢時,您提示我收到以下內容:Msg 156,Level 15,State 1,第6行 關鍵字'AS'附近的語法不正確。 –

+1

@RichardQuinn對不起,錯字..錯過了一個'(',現在試試 – sagi

+0

什麼是英雄,那工作:)乾杯 –

2

你可以試試

SELECT * FROM 

(SELECT Modules.UserID, Module_Info.ModuleTitle, Modules.ModuleMarks, Modules.ExamMark, Modules.AssignmentMark, MarkClassification.MarkDescription 
FROM Module_Info 
INNER JOIN Modules ON Module_Info.ModuleID = Modules.ModuleID 
INNER JOIN MarkClassification ON Modules.MarkCodeDescription = MarkClassification.MarkId 
WHERE(Modules.UserID = '8')) t1 

JOIN 

(SELECT AVG(Modules.ExamMark) AS Average 
FROM Module_Info 
INNER JOIN Modules ON Module_Info.ModuleID = Modules.ModuleID 
WHERE (Modules.ModuleID = '2')) t2 

由於您沒有連接條件,它將創建兩個查詢的笛卡爾乘積(即,第一子查詢的每一行,第二子查詢的每一行)。由於第二個子查詢只有一行,它會給你預期的結果。

+0

感謝一旦我運行它的答案我得到以下內容:消息102,級別15,狀態1,線12 't2'附近語法不正確。 –

+1

嘗試將'on 1 = 1'添加爲'always true'連接條件 –