Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 连接表示Access中随时间变化的两个表_Sql_Ms Access_Join - Fatal编程技术网

Sql 连接表示Access中随时间变化的两个表

Sql 连接表示Access中随时间变化的两个表,sql,ms-access,join,Sql,Ms Access,Join,我正在使用Access并尝试连接两个具有以下结构的表: 表1: Col1 Col2 T1 C A 1.1 B A 1.2 D A 1.3 表2: Col1 Col2 T2 C A 2.1 B A 2.2 E A 2.3 我希望结果表如下表所示: Col1 Col2 T1 T2 C A 1.1 2.1 B A

我正在使用Access并尝试连接两个具有以下结构的表:

表1:

Col1   Col2   T1
C      A      1.1
B      A      1.2
D      A      1.3
表2:

Col1   Col2   T2
C      A      2.1
B      A      2.2
E      A      2.3
我希望结果表如下表所示:

Col1   Col2   T1    T2
C      A      1.1   2.1
B      A      1.2   2.2
D      A      1.3   0
E      A      0     2.3

我从互联网上尝试了这么多解决方案(外部连接),但我没有得到所需的结果!如果有人能帮我解决这个问题,我将不胜感激

不幸的是,Access不支持完全外部联接。您需要执行两个联接,然后合并表

SELECT COALESCE(A.Col1,B.Col1 ) AS Col1,
       COALESCE(A.Col2,B.Col2 ) AS Col2,
       COALESCE(A.T1,0) AS T1,
       COALESCE(B.T2,0) AS T2
  FROM TABLE1 A
FULL OUTER JOIN
       TABLE2 B
    ON A.Col1 = B.Col1; 
这将使您的桌子没有特定的顺序。如果字段为空,则
NZ(T1,0)
将T1替换为0

SELECT    Table1.Col1
        , Table1.Col2
        , NZ(T1,0)
        , NZ(T2,0)
FROM    Table1 LEFT JOIN Table2 ON Table1.Col1 = Table2.Col1 AND Table1.Col2 = Table2.Col2

UNION SELECT    Table2.Col1
        , Table2.Col2
        , NZ(T1,0)
        , NZ(T2,0)
FROM    Table2 LEFT JOIN Table1 ON Table2.Col1 = Table1.Col1 AND Table2.Col2 = Table1.Col2
要在最终查询中获得所需的确切字段名,您必须将查询包装在另一个查询中-您不能将call
NZ(T1,0)用作T1
,因为您将得到循环引用警告

SELECT  Col1, Col2, T1Col AS T1, T2Col AS T2
FROM        (
            SELECT    Table1.Col1
                    , Table1.Col2
                    , NZ(T1,0) AS T1Col
                    , NZ(T2,0) AS T2Col
            FROM    Table1 LEFT JOIN Table2 ON Table1.Col1 = Table2.Col1 AND Table1.Col2 = Table2.Col2

            UNION SELECT    Table2.Col1
                    , Table2.Col2
                    , NZ(T1,0)
                    , NZ(T2,0)
            FROM    Table2 LEFT JOIN Table1 ON Table2.Col1 = Table1.Col1 AND Table2.Col2 = Table1.Col2
            )  

我不知道如何得到你要的排序单

请看一下left join and coalesce()。access中的coalesce alternative非常感谢,但我刚刚在access中尝试了这一点,在FROM子句中出现语法错误,并且突出显示了关键字FULL?