如何在 ydn-db 中实现内部连接?
Posted
技术标签:
【中文标题】如何在 ydn-db 中实现内部连接?【英文标题】:How to Implement inner join in ydn-db? 【发布时间】:2015-01-18 02:47:27 【问题描述】:我需要根据ORDER_ID
对两个表order_header
和order_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 中实现内部连接?的主要内容,如果未能解决你的问题,请参考以下文章