I do have following database structure.
users -> comment -> products
a. users and products are the vertexes that contain some info etc: user_name, product_name and .... b. comment is the edge that contains comment and created/modified date.
what is the sql query may look like in order to show the following result.
Note: i have to show all of the products that may have or no have comment.
create class User extends V
create property User.name string
create class Product extends V
create property Product.name string
create class Comment extends E
create property Comment.comment string
create property Comment.createDate datetime
create property Comment.modifiedDate datetime
create vertex User set name = 'u1' # 12:0
create vertex Product set name = 'p1' # 13:0
create vertex Product set name = 'p2' # 13:1
create edge Comment from #12:0 to #13:0 set comment = 'nice product', createDate = sysdate()
If the above is your situation, I believe the query you're looking for is something like:
select *, expand(inE('Comment')) from Product
UPDATE:
It's not very pretty, but as a workaround you could use:
select *, inE('Comment').include('comment', 'createDate', 'modifiedDate') from Product
you cannot "join" classes/tables when querying. instead, merge the result sets -> start from the edge class for Product
s with Comment
s, then use let
and unionall()
to add the non-Comment
ed Product
s before expand()
ing:
select expand($c)
let $a = (select in.name as name, out.name as User, comment, createDate, modifiedDate from Comment),
$b = (select from Product where in_Comment is null),
$c = unionall($a, $b)
note that in the result set you will have the @CLASS
field fed with null
s from the first query (i.e., from the $a
result set) and with Product
from the second query (the $b
result set)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With