Как лучше всего создать ребра на основе свойства, общего для 2 вершин?

У меня есть 2 класса вершин - EMPLOYEE и BRANCH, оба из которых заполнены данными, и я хочу, чтобы пограничный класс InBranch был их связью.

Так что Сотрудник -InBranch-> Филиал.

Класс Employee со свойствами -> empname, branchname.
Класс ветка с пропетой -> фирменное имя.

Вместо общего имущества (branchname) как отношения,
Я хотел бы сделать их как края (InBranch).

Я пытаюсь сделать работу конструкцией, подобной приведенной ниже:

CREATE EDGE InBranch FROM (SELECT FROM Employee) TO (SELECT FROM Branch) WHERE Employee.branchname = Branch.branchname

который интуитивно похож на код Луки Гарулли:

create edge Owns from (select from Person) to (select from Country)

от OrientDB: Использование схем с графиками, часть 1.

1 ответ

Решение

Вы не можете сделать это напрямую через sql, но вы можете использовать функцию JS:

var g = orient.getGraph();
var emp = g.command('sql','select from Employee');

for each (a in emp){
  br = g.command('sql','select from Branch where branchname = "' + a.getProperty('branchname') + '"');
  for each (b in br){
    g.command('sql','create edge inBranch from ' + a.getId() + ' to ' + b.getId());
   }
}
Другие вопросы по тегам