Я пытаюсь сделать запрос, который возвращает информацию между классами (я планирую преобразовать их в ребра позже, используя выходные данные этого запроса)
Это моя тестовая установка (я использую 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
, чтобы вернуть правильные значения, кажется, застрял в использовании только первой записи?
Я очень ценю любую помощь, которую вы можете дать мне, чтобы выяснить, как исправить этот запрос.