Проблема с подзапросами в OrientDb - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь сделать запрос, который возвращает информацию между классами (я планирую преобразовать их в ребра позже, используя выходные данные этого запроса)

Это моя тестовая установка (я использую OrientDB 3.0.14):

CREATE CLASS users
INSERT INTO users CONTENT {"name": "user1", "state_code": "CA"}
INSERT INTO users CONTENT {"name": "user2", "state_code": "VA"}
INSERT INTO users CONTENT {"name": "other3", "state_code": "FL"}

CREATE CLASS states
INSERT INTO states CONTENT {"code": "CA", "name": "California"}
INSERT INTO states CONTENT {"code": "VA", "name": "Virginia"}
INSERT INTO states CONTENT {"code": "FL", "name": "Florida"}

Теперь этот запрос работает нормально, я вижу ожидаемые результаты:

SELECT name, state_code, $state FROM users LET $state=(SELECT FROM states WHERE code=$parent.$current.state_code)

+----+------+----------+---------------------------+
|#   |name  |state_code|$state                     |
+----+------+----------+---------------------------+
|0   |user1 |CA        |[{code:CA,name:California}]|
|1   |user2 |VA        |[{code:VA,name:Virginia}]  |
|2   |other3|FL        |[{code:FL,name:Florida}]   |
+----+------+----------+---------------------------+

Итак, я попытался добавить подзапрос для фильтрации и вернуть только некоторыеиз записей в пользователях, использующих:

SELECT name, state_code, $state FROM (SELECT FROM users WHERE name LIKE 'user%') LET $state=(SELECT FROM states WHERE code=$parent.$current.state_code)
+----+-----+----------+---------------------------+
|#   |name |state_code|$state                     |
+----+-----+----------+---------------------------+
|0   |user1|CA        |[{code:CA,name:California}]|
|1   |user2|VA        |[{code:CA,name:California}]|
+----+-----+----------+---------------------------+

Я не могу найти способ для вычисленного значения $state, чтобы вернуть правильные значения, кажется, застрял в использовании только первой записи?

Я очень ценю любую помощь, которую вы можете дать мне, чтобы выяснить, как исправить этот запрос.

...