Sql 在两个表上选择“内部联接”,不提取任何数据

Sql 在两个表上选择“内部联接”,不提取任何数据,sql,Sql,我试图从两个表中提取相同的数据。一个表是前几个月的数据,称为MAArchive,手动调整表是当前月份。我想运行一个查询,根据从下拉列表中选择的名称从两个表中提取相同的数据 我已经创建了下面的查询,但当它运行时,不会从表中提取任何数据,也不会出现错误 SELECT DISTINCT maarchive.ptlname, maarchive.campusoccurred, maarchive.deptoccurred,

我试图从两个表中提取相同的数据。一个表是前几个月的数据,称为MAArchive,手动调整表是当前月份。我想运行一个查询,根据从下拉列表中选择的名称从两个表中提取相同的数据

我已经创建了下面的查询,但当它运行时,不会从表中提取任何数据,也不会出现错误

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,我没有任何东西可以连接内部连接。因为提交的每个调整的主索引都不同