Sql 在两个表上选择“内部联接”,不提取任何数据
我试图从两个表中提取相同的数据。一个表是前几个月的数据,称为MAArchive,手动调整表是当前月份。我想运行一个查询,根据从下拉列表中选择的名称从两个表中提取相同的数据 我已经创建了下面的查询,但当它运行时,不会从表中提取任何数据,也不会出现错误Sql 在两个表上选择“内部联接”,不提取任何数据,sql,Sql,我试图从两个表中提取相同的数据。一个表是前几个月的数据,称为MAArchive,手动调整表是当前月份。我想运行一个查询,根据从下拉列表中选择的名称从两个表中提取相同的数据 我已经创建了下面的查询,但当它运行时,不会从表中提取任何数据,也不会出现错误 SELECT DISTINCT maarchive.ptlname, maarchive.campusoccurred, maarchive.deptoccurred,
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 )
您可以尝试以下语法:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
SQL INTERSECT运算符用于返回两个或多个SELECT语句的结果。但是,它只返回所有查询或数据集选择的行。如果一条记录存在于一个查询中而不存在于另一个查询中,则将从INTERSECT结果中忽略该记录。您可以尝试以下语法:
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions]
INTERSECT
SELECT expression1, expression2, ... expression_n
FROM tables
[WHERE conditions];
SQL INTERSECT运算符用于返回两个或多个SELECT语句的结果。但是,它只返回所有查询或数据集选择的行。如果一条记录存在于一个查询中而不存在于另一个查询中,则它将从INTERSECT结果中被忽略。我建议从
左连接开始:
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;
然后你可以调查为什么事情不匹配
根据您的描述,我不明白为什么有必要选择DISTINCT
。我建议从左连接开始:
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;
FULL OUTER JOIN
然后你可以调查为什么事情不匹配
根据您的描述,我不明白为什么需要选择“不同的”
FULL OUTER JOIN
在那种情况下,可能就是你想要的
这里有一个关于连接及其工作原理的很好的解释
在那种情况下,可能就是你想要的
这里有一个关于连接及其工作原理的很好的解释
要么没有与子句上的
匹配的内容,要么没有与WHERE
子句匹配的内容。这就是为什么这个查询不会返回任何行。或者其中一个表是空的…@GordonLinoff我想你是对的Gordon,我没有任何东西可以连接内部连接。由于提交的每个调整的主索引不同,因此没有任何内容与
子句上的匹配,也没有任何内容与
其中的子句匹配。这就是为什么这个查询不会返回任何行。或者其中一个表是空的…@GordonLinoff我想你是对的Gordon,我没有任何东西可以连接内部连接。因为提交的每个调整的主索引都不同