2016-03-31 1 views
-1

J'ai une base de données avec les données suivantes:Sélectionnez sommet distinct dans OrientDb

Vertex 

Country    City     Hotel 
--------------  --------------  --------------------------- 
ID  Name   ID  Name   ID  Name 
--------------  --------------  --------------------------- 
#16:0 Italia  #17:0 Roma   #18:0 Residence Barberini 
              #18:1 Santa Prisca 

Edges 

In       PartOf 
---------------    ------------- 
From  To     From  To 
---------------    ------------- 
#18:0 #16:0    #17:0 #16:0 
#18:0 #17:0 
#18:1 #17:0 

Je voudrais extraire tous les hôtels en Italie où ils peuvent être extraits directement en suivant le bord Dans ou indirectement suite à la bord PartOf et pour chaque élément PartOf un autre suivant le bord Dans.

Fondamentalement, le résultat attendu est

#18:0 Residence Barberini (direct from Italia) 
#18:1 Santa Prisca   (traversing Roma) 

J'utilise la requête suivante

select distinct(h) from 
(select in('in') as h from (traverse in('partOf') from #16:0)) 

et j'obtenir les résultats suivants:

#18:0 
#18:0, #18:1 

Comment est-il possible de récupérer uniquement les Hôtels distincts efficacement? Le résultat attendu devrait être

#18:0 
#18:1 (instead of #18:0, #18:1) 

Merci!

Répondre

1

Vous pouvez utiliser

select distinct(h) from 
(select in('in') as h from (traverse in('partOf') from #16:0) unwind h) 
+0

Il fonctionne, merci beaucoup. Grazie Alessandro –