2017-10-23 7 views
1

データベースとしてOrientDBを使用してアプリケーションを開発しています。データベースはすでに埋め尽くされており、特定の情報を得るためにいくつかのクエリを行う必要があります。特定の関係に一致するOrientDBグラフクエリ

3つのクラスと3つのエッジがあります。私がする必要があるのは、特定の関係が存在するかどうかをデータベースに照会することです。関係は次のようである:

ParlamentarVertex --Realiza> TransacaoVertex --FornecidaPor> EmpresaFornecedoraVertex AND ParlamentarVertex --SocioDe> EmpresaFornecedoraVertex 

それに頂点を持つ名前はもちろんの頂点であり、矢印は2つの頂点間のエッジです。

私はこれを行うにしようとしました:

SELECT TxNomeParlamentar, SgPartido, SgUF FROM Parlamentar where ... 

SELECT EXPAND(out('RealizaTransacao').out('FornecidaPor')) FROM Parlamentar 

しかし、私は、where句の後に関係を指定する方法がわかりません。

私も試合

MATCH {class: Parlamentar, as: p} -Realiza-> {as:realiza} 

を使用することを試みた。しかし、私は、私のクエリのために非常に重要である句を指定する方法がわからないです。

誰かがヒントを持っているので、正しい方向に進むことができますか? ありがとうございます!

私は以下のクエリを使用するために管理してきた1

EDIT:

SELECT EXPAND(out('RealizaTransacao').out('FornecidaPor').in('SocioDe')) FROM Parlamentar 

それはほとんど動作しますが、間違っていくつかの関係を返します。それは、私がPkとFKに縛らなかったというようなものです。

答えて

1

ここで最も簡単な方法は、次のようにMATCHを使用することです:

(何が必要か、RETURN)
MATCH 
    {class:ParlamentarVertex, as:p} -Realiza-> {class:TransacaoVertex, as:t} 
     -FornecidaPor-> {class:EmpresaFornecedoraVertex, as:e}, 
    {as:p} -SocioDe-> {as:e} 
RETURN p, p.TxNomeParlamentar, p.SgPartido, p.SgUF, t, e 

あなたが見ることができるようにし、複数のパターンの追加として表され、コンマで区切られています

+0

ありがとうございました。私はこの解決策を試し、あなたにお返しします。 –

+0

これは動作します、ありがとう! –

関連する問題