如何在 ydn-db 中实现内部连接?

Posted

技术标签:

【中文标题】如何在 ydn-db 中实现内部连接?【英文标题】:How to Implement inner join in ydn-db? 【发布时间】:2015-01-18 02:47:27 【问题描述】:

我需要根据ORDER_ID 对两个表order_headerorder_item 实现内连接。等效的 SQL 查询: SELECT * FROM order_header INNER JOIN order_item ON order_header.ORDER_ID=order_item.ORDER_ID 如何在 ydn-db 中实现?

【问题讨论】:

【参考方案1】:

使用db.scan 进行表连接。目前 YDN-DB 没有一个很好的加入包装器,但manual joining 并不难。这是SELECT * FROM Supplier, Part WHERE Supplier.CITY = Part.CITY的加入查询。

var iter_supplier = new ydn.db.IndexValueIterator('Supplier', 'CITY');
var iter_part = new ydn.db.IndexValueIterator('Part', 'CITY');
var req = db.scan(function(keys, values) 
  var SID = keys[0];
  var PID = keys[1];
  console.log(SID, PID);
  if (!SID || !PID) 
    return []; // done
  
  var cmp = ydn.db.cmp(SID, PID); // compare keys
  if (cmp == 0) 
    console.log(values[0], values[1]);
    return [true, true]; // advance both
   else if (cmp == 1) 
    return [undefined, SID]; // jump PID cursor to match SID
   else 
    return [PID, undefined]; // jump SID cursor to match PID
  
, [iter_supplier, iter_part]);

在Join query article上查看更多详情。

【讨论】:

以上是关于如何在 ydn-db 中实现内部连接?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用springs在tomcat连接池中实现XA连接支持?

如何在 Spark 中实现“交叉连接”?

如何在浏览器中实现 HTTP/2 流连接?

如何在 Sails.js 中实现连接多方

如何在 QML 中实现对象之间的单一连接?

如何在两个表之间的组中实现递归连接?