Oracle SQL - 连接表以将一列包含在另一列中(反之亦然)

时间:2016-11-26 17:07:27

标签: sql oracle join

这些是我的示例表格,列和记录......

_

方案:
我希望得到一个结果,其中两个表连接在一起,MANHRS和WAGES列都在结果集中。

Table:           tbl1
         -----------------------
Columns: ID | DEPT | WK | MANHRS
Records: 01    A     1      8 
         02    A     2      2

Table: tbl2
--------------------------------
Columns: ID | DEPT | WK | WAGES
Records: 01     A    1      3
         02     A    2      5


我试过UNION但没有得到我预期的结果。 :(
怎么做?

2 个答案:

答案 0 :(得分:1)

编写查询的正确方法是:

SELECT t1.*, t2.WAGES  
FROM tbl1 t1 JOIN
     tbl2 t2
     ON t1.DEPT = t2.DEPT and t1.WK = t2.WK;

注意:

  • 从不FROM子句中使用逗号。 始终使用正确的JOIN语法。
  • 我不确定ID是否属于JOIN条件。
  • 如果您想要两个表中的所有行,但有些可能会丢失,请使用FULL JOIN

您可以使用USING子句编写查询:

SELECT ID, DEPT, WK, t1.MANHRS, t2.WAGES  
FROM tbl1 t1 JOIN
     tbl2 t2
     USING (ID, DEPT, WK);

如果您使用的是FULL JOIN,则此功能特别有用。

答案 1 :(得分:0)

假设您应该加入DEPT和WK:

SELECT t1.*, t2.WAGES  
FROM tbl1 t1, tbl2 t2
where t1.DEPT = t2.DEPT and t1.WK = t2.WK