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
Oracle SQL-连接表以将一列包含到另一列(反之亦然)_Sql_Oracle_Join - Fatal编程技术网

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

Oracle SQL-连接表以将一列包含到另一列(反之亦然),sql,oracle,join,Sql,Oracle,Join,这些是我的示例表、列和记录… 场景: 我想得到一个结果,其中两个表连接在一起,MANHRS和sweers列都在结果集中 我试过联合,但没有得到预期的结果( 如何做到这一点?假设您应该按部门和工作加入: SELECT t1.*, t2.WAGES FROM tbl1 t1, tbl2 t2 where t1.DEPT = t2.DEPT and t1.WK = t2.WK 编写查询的正确方法是: SELECT t1.*, t2.WAGES FROM tbl1 t1 JOIN

这些是我的示例表、列和记录…

场景:
我想得到一个结果,其中两个表连接在一起,MANHRS和sweers列都在结果集中



我试过联合,但没有得到预期的结果(

如何做到这一点?

假设您应该按部门和工作加入:

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

编写查询的正确方法是:

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
您可以使用
子句编写查询:

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

如果您使用的是
完全联接

提示:
联接
。您遇到了什么问题?您尝试了什么?我尝试了联合,但没有得到预期的结果。:(使用
联接
重试,并将查询放入问题中(您可以编辑问题)。我试过了。它很有效。谢谢戈登。不要用过时的
JOIN
语法回答问题!谢谢!我会注意“正确的连接语法”。我在连接时使用逗号,并且在where子句中有键。我还使用了(+)对于左/右连接。我不知道为什么这不是一个最佳实践。您能告诉我吗?@boombox2014…我认为文档中的主题非常清楚:“Oracle建议您使用FROM子句外部连接语法,而不是Oracle连接运算符。”()
SELECT t1.*, t2.WAGES  
FROM tbl1 t1 JOIN
     tbl2 t2
     ON t1.DEPT = t2.DEPT and t1.WK = t2.WK;
SELECT ID, DEPT, WK, t1.MANHRS, t2.WAGES  
FROM tbl1 t1 JOIN
     tbl2 t2
     USING (ID, DEPT, WK);