Hi,

Try following way:

   1. Select a wrench.
   2. traverse to all UsesTool edges
   3. filter this edges by car
   4. traverse to mechanics

Implementation could be like following:
select expand(outV()) from (select expand(inE('UsesTool')) from Tool where
name='Wrench') where CarId[0] in (select from Car where name='Mercedes')

This query fine in small datasets but it will slow down as soon as you have
lots of tools, cars and UsesTool entries. To improve that can divide it on
3 queries different and add some indexes.

I suppose there is a mistake in your schema. When you execute a subquery it
returns a collection of elements so the type of property UsesTool.CarId
will be LINKLIST, but I suppose you need just a LINK. To fix that you
should modify "create edge UsesTool.." query. And then you can use CarId
instead of CarId[0] in query above.



Best regards,
Artem Orobets

* Orient Technologiesthe Company behind OrientDB*


2014/1/14 arosta <[email protected]>

>  Hi guys.  Apologies for the newbie question but two of us have been
> trying to figure out how to query the ‘CarId’ property on the edge called
> ‘UsedOn’ to determine the following with no luck:
>
> *Who are all the people that use a wrench on a Mercedes?*
>
>
> Here is the script to create the sample db:
>
> create class Car extends V
>
> create vertex Car set name='Mercedes'
>
>
> create class Mechanic extends V
>
> create vertex Mechanic set firstName=‘Andy’, lastName=‘Miller’
>
> create vertex Mechanic set firstName = ‘Billy’, lastName = ‘Edwards’
>
>
> create class Tool extends V
>
> create vertex Tool set name=‘Wrench’
>
>
> create class WorksOn extends E
>
> create edge WorksOn from (select from Mechanic where firstName=‘Billy’) to
> (select from Car where name=‘Mercedes’)
>
>
> create class UsesTool extends E
>
> create edge UsesTool from (select from Mechanic where firstName='Billy')
> to (select from Tool where name='Wrench') set CarId = (select @Rid from Car
> where name='Mercedes')
>
>
> We've tried googling similar examples but there doesn't seem to be in
> depth documentation about querying based on edge properties (or we're just
> not googling the right search phrase).  That said, any help is greatly
> appreciated.
>
>
>
>  --
>
> ---
> You received this message because you are subscribed to the Google Groups
> "OrientDB" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"OrientDB" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to