关系数据库中的键和值查找

时间:2014-08-18 21:41:17

标签: sql oracle oracle11g kognitio-wx2 kognitio

我的数据如下

TABLE1
------
A  |B
1  |2
3  |4

TABLE2
------
C  |D
1  |11
2  |12
3  |13
4  |14

预期输出

D , D
--------
11, 12
13, 14

这个输出背后的逻辑是,我需要创建一个视图,以便视图总是返回table2的列D,对应于table1的列A或列B,与table2的列C匹配。此视图将充当查找,以基于table1中的键查找Table2中的值。如果是这种情况,table1中的任何一个键在table2中没有相应的值,那么就不应该报告该对。

数据设置:

CREATE TABLE Table1
    ("A" number, "B" number);

INSERT ALL 
    INTO Table1 ("A", "B")       VALUES (1, 2)
    INTO Table1 ("A", "B")       VALUES (3, 4)
SELECT * FROM dual;

CREATE TABLE Table2
    ("C" number, "D" number);

INSERT ALL 
    INTO Table2 ("C", "D")       VALUES (1, 11)
    INTO Table2 ("C", "D")       VALUES (2, 12)
    INTO Table2 ("C", "D")       VALUES (3, 13)
    INTO Table2 ("C", "D")       VALUES (4, 14)
SELECT * FROM dual;

我尝试使用字符串连接进行一些连接,但它们看起来很糟糕。这实际上是一个Kognitio数据库,但大多数oracle语法在这里工作。我也提到了this毫无用处。这也是一个DWH环境,我们将这个逻辑应用于代理键。

1 个答案:

答案 0 :(得分:3)

您只想加入两次:

select t2a.D, t2b.D
from table1 t2 join
     table2 t2a
     on t1.A = t2a.C join
     table2 t2b
     on t1.B = t2b.C;

请注意table2使用两个不同的别名。这是在查询中区分它们的方式。