Подвыбор в переменной в OrientDB

У меня есть следующий SQL-запрос OrientDB:

select expand($all) let
$a = (select groups, inV().firstName from (
    select expand(outE()) from (select from user where uuid = 'abc')
)),
$b = (select groups, outV().firstName from (
    select expand(inE()) from (select from user where uuid = 'abc')
)),
$all = unionall($a, $b)

Неважно, что пытается выполнить запрос. Во всяком случае, в таком виде он работает. Но, как вы можете заметить, есть дублирование select from user where uuid = 'abc'. Как я могу извлечь эту часть в переменную и использовать ее несколько раз?


Я уже пробовал:

select expand($all) let
$x = (select from user where uuid = 'abc'),
$a = (select groups, inV().firstName from (
    select expand(outE()) from $x
)),
$b = (select groups, outV().firstName from (
    select expand(inE()) from $x
)),
$all = unionall($a, $b)

а также

select expand($all) let
$x = (select from user where uuid = 'abc'),
$a = (select groups, inV().firstName from (
    select expand($x.outE())
)),
$b = (select groups, outV().firstName from (
    select expand($x.inE())
)),
$all = unionall($a, $b)

а также

select expand($all) let
$x = first((select from user where uuid = 'abc')),
$a = (select groups, inV().firstName from (
    select expand($x.outE())
)),
$b = (select groups, outV().firstName from (
    select expand($x.inE())
)),
$all = unionall($a, $b)

но, безрезультатно. Все запросы анализируются успешно, но возвращают пустой результат. Что я делаю не так?

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


person Bart    schedule 26.02.2015    source источник


Ответы (1)


Показанный вами запрос только «объединяет» несколько запросов в один запрос и дает результат.

Объявленные вами переменные содержат результат этого конкретного запроса, который можно использовать в функциях SQL, таких как UNIONALL(). Вы не можете использовать это в других запросах.

В документации ничего подобного не нашел. Возможно, более новая версия будет поддерживать это!

person Jagrut    schedule 18.03.2015