2016-05-21 27 views
2

私は2つの頂点UserとStampを持っています。頂点は、3つのエッジHave、WishToHaveおよびSellingによって関連付けられます。OrientDB複数のエッジから一意の頂点を選択

私は、Userと関係のある一意のStampを選択したいと考えています。私は、このコマンドを実行していた、それを行うには:

select expand(out('Have', 'WishToHave', 'Selling')) from #12:0 

を、このコマンドの問題点は、エッジを持っているし、販売しているので、それは、「Stamp1」数回を返すということです。

User1に関連する一意の/別個のすべてのスタンプを選択するにはどうすればよいですか?

は、この例のためのテストデータを初期化するには:私はあなたの構造であなたのケースを試してみました

create class User extends V 
create class Stamp extends V 

create class Have extends E 
create class WishToHave extends E 
create class Selling extends E 

create vertex User set name = 'User1' 
create vertex Stamp set name = 'Stamp1' 
create vertex Stamp set name = 'Stamp2' 
create vertex Stamp set name = 'Stamp3' 


create edge Have from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp1') 
create edge WishToHave from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp2') 
create edge Selling from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp1') 
create edge Selling from (select from User where name = 'User1') to (select from Stamp where name = 'Stamp3') 

答えて

0

enter image description here

あなたがDISTINCT()機能を使用することができますユニークな頂点を取得するには。ターゲットクエリでEXPAND()を使用して

SELECT EXPAND(DISTINCT(@rid)) FROM (SELECT EXPAND(out('Have', 'WishToHave', 'Selling')) FROM #12:0) 

出力:

クエリ1:

enter image description here

クエリ2:がでUNWINDを使用して、私はあなたに2つの例を与えることができますターゲットクエリ

SELECT EXPAND(DISTINCT(out)) FROM (SELECT out('Have', 'WishToHave', 'Selling') FROM #12:0 UNWIND out) 

出力:

enter image description here

は、それが

+0

おかげで多くのことができます願っています。これはまさに私が探していたものです。 – TWeb

+0

こんにちは@TWeb、うれしかったことをうれしく思います。 – LucaS

関連する問題