我正在尝试将两个sql语句合并为一个,但没有成功。
我理想情况下将Average查询添加到第一个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 :(得分:3)
您可以在select中使用子查询,如下所示:
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')
答案 1 :(得分: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
由于您没有连接条件,它将创建两个查询的笛卡尔积(即第一个子选择的每一行,第二个子选择的每一行)。由于第二个子选择只有一行,它将为您提供预期的结果。