OrientDB для цикла - PullRequest
       6

OrientDB для цикла

0 голосов
/ 01 июля 2018

Я хочу создать одиночный запрос для цикла 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 ()

Заранее спасибо

1 Ответ

0 голосов
/ 03 июля 2018

Чтобы получить нужную комбинацию в новой таблице, попробуйте эту функцию 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()

Надеюсь, это поможет

Привет

...