2015-07-07 2 views
0

У меня есть следующий запрос OrientDB SQL, который возвращает имя пользователя и страну всех друзей пользователя #12:0.Фильтровать края по свойству в подзапросе - orientdb sql

select 
    username, country 
from (select 
     expand(both('friends')) 
     from 
     users 
     where 
     @rid = #12:0) 

Но, то friends край имеет свойство years с целым числом. Мне нужны только те друзья #12:0, которые имеют friends.years > 3.

Я попытался

SELECT username, country from (SELECT expand(outE('friends')[years > 3].inV()) FROM #12:0)

SELECT username, country from (SELECT expand(both('friends')[years = 2]) FROM #12:0)

и различные игры на том же запросе.

Спасибо, все!

ответ

2
create class User extends V 
create property User.username string 
create property User.country string 

create class friends extends E 
create property friends.year integer 


create vertex User content {'username':'u1', 'country':'PT'} 
create vertex User content {'username':'f1', 'country':'AW'} 
create vertex User content {'username':'f2', 'country':'CN'} 

create edge friends 
from (select from User where username = 'u1') 
to (select from User where username = 'f1') 
content {'years':3} 

create edge friends 
from (select from User where username = 'f2') 
to (select from User where username = 'u1') 
content {'years':4} 

Я считаю, что это ваша ситуация. Вы можете:

select expand(bothE('friends')[years = 3].inV()) 
from (select from User where username = 'u1') 

Но, для того, что я знаю, следующий еще не поддерживаются:

select expand(bothE('friends')[years > 3].inV()) 
from (select from User where username = 'u1') 
Смежные вопросы