Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.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/0/azure/11.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
完全外部连接Oracle_Oracle - Fatal编程技术网

完全外部连接Oracle

完全外部连接Oracle,oracle,Oracle,我从不同的表格中获得了以下数据集 Table1 ------- EMPID DEPID C1 C2 SUM --------------------------- 100 200 2 3 111 100 200 4 4 222 Table2 ------- EMPID DEPID C1 C2 SUM --------------------------- 100 200 4 4 3

我从不同的表格中获得了以下数据集

Table1
-------
EMPID    DEPID   C1  C2  SUM
---------------------------
100      200     2    3   111
100      200     4    4   222

 Table2
-------
EMPID    DEPID   C1  C2  SUM
---------------------------
100      200     4    4   333
100      200     5    6   444
我要找的结果---


任何帮助都是非常感激的。我使用了完全外部联接,但无法实现此目的。

您希望在
(emp\u id,dep\u id)
上使用
完全外部联接
(c1,c2)
上使用
内部联接。我想你不可能一步就写出这个连接条件。我提出了一个两步查询(一个
完全外部联接
,然后是一个过滤器子查询)


请注意,我在示例中的
T2
中添加了一行,以演示
内部联接

您希望
上有
内部联接
(emp\u id,dep\u id)
上的
完全外部联接
(c1,c2)
。我想你不可能一步就写出这个连接条件。我提出了一个两步查询(一个
完全外部联接
,然后是一个过滤器子查询)



请注意,我在示例中的
T2
中添加了一行,以演示
内部联接

oracle的哪个版本?联接应位于哪些列上<代码>t1.c1=t2.c1
<代码>t1.c2=t2.c2?他们两个?或者
t1.c1=t2.c2
<代码>t2.c1=t1.c2?或者这两者?连接条件是T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2。。因此,我正在检查上述四个条件,如果C1和C2匹配,我将打印两个表中的和,否则相应的coulmns将为NULL。@如果缺少
empid
depid
,您还没有显示所需的结果。我正在寻找T1.EMP\u ID=T2.EMP\u ID和T1.DEP\u ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2的外部连接。。。。所以我只需要T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID始终满足的记录。EMPID和DEPTID将始终存在于T1和T2中。oracle的哪个版本?连接应该在哪些列上<代码>t1.c1=t2.c1<代码>t1.c2=t2.c2?他们两个?或者
t1.c1=t2.c2
<代码>t2.c1=t1.c2?或者这两者?连接条件是T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2。。因此,我正在检查上述四个条件,如果C1和C2匹配,我将打印两个表中的和,否则相应的coulmns将为NULL。@如果缺少
empid
depid
,您还没有显示所需的结果。我正在寻找T1.EMP\u ID=T2.EMP\u ID和T1.DEP\u ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2的外部连接。。。。所以我只需要T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID始终满足的记录。EMPID和DEPTID将始终在T1和T2中..谢谢Vincent..但是连接条件是T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2。。因此,我正在检查上述四个条件,如果C1和C2匹配,我将打印两个表中的和,否则相应的coulmns将为NULL。这正是我写的连接条件,你不同意吗?我的应用程序用于混淆。。我必须确保T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID始终有效。。这里,完整的外部连接将提供所有记录,即使其中一个表中没有emp_id和dept_id的记录。总结一下,我正在寻找T1.emp_id=T2.emp_id和T1.DEP_id=T2.DEP_id的内部连接,以及T1.C1=T2.C1和T1.C2=T2.C2的外部连接。您的示例数据没有涵盖所有情况,那么=)请参阅我的更新答案。谢谢Vincent…但是连接条件是T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID和T1.C1=T2.C1和T1.C2=T2.C2。。因此,我正在检查上述四个条件,如果C1和C2匹配,我将打印两个表中的和,否则相应的coulmns将为NULL。这正是我写的连接条件,你不同意吗?我的应用程序用于混淆。。我必须确保T1.EMP_ID=T2.EMP_ID和T1.DEP_ID=T2.DEP_ID始终有效。。这里,完整的外部连接将给出所有记录,即使其中一个表中没有emp_id和dept_id的记录。总结一下,我正在寻找T1.emp_id=T2.emp_id和T1.DEP_id=T2.DEP_id的内部连接,以及T1.C1=T2.C1和T1.C2=T2.C2的外部连接。您的示例数据没有涵盖所有情况,那么=)请参阅我更新的答案。
Table1
-------
EMPID    DEPID   T1.C1  T1.C2  T2.C1   T2.C2    T1.SUM   T2.SUM
--------------------------------------------------------------
100      200       2      3     NULL    NULL     111      NULL
100      200       4      4      4        4      222      333
100      200       NULL   NULL   5        6      NULL     444
SQL> WITH t1 AS (
  2  SELECT 100 emp_id, 200 dep_id, 2 c1, 3 c2, 111 sum FROM dual UNION ALL
  3  SELECT 100 emp_id, 200 dep_id, 4 c1, 4 c2, 222 sum FROM dual
  4  ), t2 AS (
  5  SELECT 100 emp_id, 200 dep_id, 4 c1, 4 c2, 333 sum FROM dual UNION ALL
  6  SELECT 100 emp_id, 200 dep_id, 5 c1, 6 c2, 444 sum FROM dual UNION ALL
  7  SELECT 100 emp_id, 300 dep_id, 7 c1, 8 c2, 555 sum FROM dual
  8  )
  9  SELECT COALESCE(t1.emp_id, t2.emp_id) emp_id,
 10         COALESCE(t1.dep_id, t2.dep_id) dep_id,
 11         t1.c1, t1.c2, t2.c1, t2.c2, t1.sum, t2.sum
 12    FROM t1
 13    FULL OUTER JOIN t2
 14      ON t1.emp_id = t2.emp_id
 15     AND t1.dep_id = t2.dep_id
 16     AND t1.c1 = t2.c1
 17     AND t1.c2 = t2.c2
 18   WHERE (COALESCE(t1.emp_id, t2.emp_id), COALESCE(t1.dep_id, t2.dep_id))
 19         IN (SELECT t1.emp_id, t1.dep_id
 20               FROM t1
 21               JOIN t2 ON t1.emp_id = t2.emp_id
 22                      AND t1.dep_id = t2.dep_id)
 23  ORDER BY t1.c1;

    EMP_ID     DEP_ID         C1         C2         C1         C2  SUM  SUM
---------- ---------- ---------- ---------- ---------- ---------- ---- ----
       100        200          2          3                        111 
       100        200          4          4          4          4  222  333
       100        200                                5          6       444