你认为这是左外连接吗?

时间:2017-03-09 09:54:03

标签: sql oracle join

SELECT * FROM LOCN_HDR LH, PICK_LOCN_DTL PLD WHERE pld.locn_id = lh.locn_id(+)

我正在尝试转换为oracle编写的一些旧代码,以便能够在SQL SERVER上运行它。我之前没有使用过(+),但是从快速google开始我认为它是一个外部联接,当它位于右侧时,它是一个左连接,所以从locn_hdr加上来自pick_locn_dtl的所有匹配项中的所有内容。是吗?

只有当我测试它时,它似乎没有像我预期的那样工作。

2 个答案:

答案 0 :(得分:4)

由于pld LEFT JOIN lh位于连接表达式的右侧,因此它是表达式左侧表格上的左连接(即等于pld ),因此它会返回PICK_LOCN_DTL(即lh)与LOCN_HDR(+))中的等效行匹配的每一行。

左/右内涵适用于具有FROM本身的表达式的左/右,而不适用于SELECT * FROM pick_locn_dtl PLD LEFT JOIN locn_hdr LH ON pld.locn_id = lh.locn_id 子句中表的顺序。

这将提供

的ANSI标准连接语法
  var global_variable = 0;
  var json_object = "Some Json Object";
  console.log("1");
  NodeToPython(json_object);         //Calling the function

  function NodeToPython(json_object_local)
  {
     var send_json = json_object_local;
     var zerorpc = require("zerorpc");
     var client = new zerorpc.Client();
     client.connect("tcp://localhost:4242");

     console.log("2");
     client.invoke("receive", send_json, function(error, res, more) 
     {
       global_variable = JSON.parse(res);        // 'res' stores retrieved value from Python code
       console.log("3");
       client.close();
     }
     console.log("4");
 }
 console.log("5");

答案 1 :(得分:0)

在Oracle中,(+)是OUTER JOIN,这是一个很好的链接,它解释了差异

https://blog.codinghorror.com/a-visual-explanation-of-sql-joins/