我确实有以下数据库结构。
用户 - >评论 - >产品
一个。用户和产品是包含一些信息等的顶点:user_name,product_name和.... 湾comment是包含注释和创建/修改日期的边缘。
为了显示以下结果,sql查询可能是什么样子。
注意:我必须显示可能有或没有评论的所有产品。
答案 0 :(得分:4)
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()
如果以上是您的情况,我相信您正在寻找的查询类似于:
select *, expand(inE('Comment')) from Product
<强>更新强>
它不是很漂亮,但作为一种解决方法,您可以使用:
select *, inE('Comment').include('comment', 'createDate', 'modifiedDate') from Product
答案 1 :(得分:1)
查询时无法“加入”类/表。相反,合并结果集 - &gt;从Product
s的Comment
s的边缘类开始,然后使用let
和unionall()
添加非Comment
ed Product
s在expand()
之前:
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)
请注意,在结果集中,您将从第一个查询(即@CLASS
结果集)和{{1}获得null
个$a
字段来自第二个查询(Product
结果集)
答案 2 :(得分:0)
使用@vitorenesduarte模式,以下查询可能符合当前要求
select name AS product_name,in(comment).name
AS user_name,inE(comment).comment
AS comment,inE(comment).createDate
AS comment_created_date,inE(comment).modifiedDate
AS comment_modified_date from product