我一直無法找到SQL的答案。OrientDB SQL檢查是否有多對頂點連接
給定它們之間的頂點對(記錄ID)和邊類型,我想檢查是否所有的對都存在。
V1 --E1 - > V2
V3 --E2 - > V4
...等等。我想要的答案是真/假或者相同的東西。所有連接必須存在才能評估爲真,因此每對至少必須存在一個(正確類型的)邊緣。
假,問題是:
Does V1 have edge <E1EdgeType> to V2?
AND
Does V3 have edge <E2EdgeType> to V4?
AND
... and so on
有誰知道orientDB SQL將是實現這一目標呢?
UPDATE
我也已經有了,如果已知頂點之間存在一個單一的邊緣檢測的一種方式。這也許不是很漂亮下去,但它的工作原理:如果類型爲「TestEdge」邊緣由第12存在:
SELECT FROM (
SELECT EXPAND(out('TestEdge')) FROM #12:0
) WHERE @rid=#12:1
這將目的地記錄(0 12):返回0到12:1。但是,如果我有兩個這樣的查詢,那麼如何查詢兩個查詢的單個結果。例如:
SELECT <something with $c> LET
$a = (SELECT FROM (SELECT EXPAND(out('TestEdge')) FROM #12:0) WHERE @rid=#12:1)
$b = (SELECT FROM (SELECT EXPAND(out('AnotherTestEdge')) FROM #12:2) WHERE @rid=#12:3)
$c = <something that checks that both a and b yield results>
這就是我的目標。請告訴我,如果我以錯誤的方式解決這個問題。我甚至不確定合併這種查詢的好處是什麼,而不是重複查詢。
也許你可以嘗試一個JavaScript函數? –