OrientDB For循环

时间:2018-07-01 11:10:43

标签: orientdb

我想使用for循环创建单个查询

例如,我有表1

[id , Name]
[ 1 , X1]
[ 2 , X2]
[ 3 , X3]

和秒表

[id, Name]
[ 5 , Y5]
[ 6 , Y6]
[ 7 , Y7]

我只想拥有一个包含跟随数据的新表

[NewName]
[X1-Y5]
[X1-Y6]
[X1-Y7]
[X2-Y5]
[X2-Y6]
[X1-Y7]
[X3-Y5]
[X3-Y6]
[X3-Y7]

我无法创建此文件,我只能使用first()和last()命令仅使用firt或alst表来实现此功能

预先感谢

1 个答案:

答案 0 :(得分:0)

要在新表格中获取所需的组合,请尝试以下javascript函数:

var g = orient.getGraph();
var table1 = g.command("sql","select from table1");
var table2 = g.command("sql","select from table2");

for(i = 0; i < table1.length; i++)
{
  for(j = 0; j < table2.length; j++)
  {
    g.command("sql","insert into table3(newName) values ('"+ table1[i].getRecord().field("name") +" - "+ table2[j].getRecord().field("name") +"')")
  }
}

您可以按照以下方式在SQL中调用它:

select function_name()

这样,您就有了一种联接表,如果您的意图不是正确的方法,因为OrientDB中没有JOIN,则可以使用Edge,Link ...

如果您正在寻找想要做的事情,可以尝试以下javascript函数:

var g = orient.getGraph();
var table1 = g.command("sql","select from table1");
var table2 = g.command("sql","select from table2");

for(i = 0; i < table1.length; i++)
{
  for(j = 0; j < table2.length; j++)
  {
    g.command("sql","create edge connection from "+ table1[i].getId() +" to "+ table2[j].getId() +"")
  }
}

和以前一样,您可以像下面这样在SQL中调用它:

select function_name()

希望有帮助

致谢