我试图从两个表中提取相同的数据。一个表是前几个月的数据,称为MAArchive,ManualAdjustment表是当前月份。我想运行一个查询,从两个表中提取相同的数据,具体取决于从下拉列表中选择的PTLName。
我创建了以下查询,但是当它运行时,它不会从表中提取任何数据而且没有错误。
SELECT DISTINCT maarchive.ptlname,
maarchive.campusoccurred,
maarchive.deptoccurred,
maarchive.coursedetails,
maarchive.dateoccurred,
manualadjustments.ptlname AS Expr1,
manualadjustments.campusoccurred AS Expr2,
manualadjustments.deptoccurred AS Expr3,
manualadjustments.dateoccurred AS Expr4
FROM maarchive
INNER JOIN manualadjustments
ON maarchive.maindex = manualadjustments.maindex
AND maarchive.ptlname = manualadjustments.ptlname
WHERE ( maarchive.ptlname = @PTLName )
答案 0 :(得分:2)
FULL OUTER JOIN
可能是你在那种情况下寻找的东西。
这是关于联接以及它们如何工作的一个很好的解释。
https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/
答案 1 :(得分:0)
您可以尝试这种语法:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
SQL INTERSECT运算符用于返回2个或更多SELECT语句的结果。但是,它仅返回由所有查询或数据集选择的行。如果记录存在于一个查询中而不存在于另一个查询中,则它将从INTERSECT结果中省略。
答案 2 :(得分:0)
我建议从LEFT JOIN
开始:
SELECT a.ptlname, a.campusoccurred, a.deptoccurred, a.coursedetails, a.dateoccurred,
ma.ptlname AS Expr1, ma.campusoccurred AS Expr2,
ma.deptoccurred AS Expr3, ma.dateoccurred AS Expr4
FROM maarchive a LEFT JOIN
manualadjustments ma
ON a.maindex = ma.maindex AND
a.ptlname = ma.ptlname
WHERE a.ptlname = @PTLName;
然后你可以调查为什么事情不匹配。
根据您的说明,我不明白为什么SELECT DISTINCT
是必要的。