东方数据库追加字段以执行连接



我正在操作文档集合和边缘集合,我想执行联接操作以从文档集合中获取详细信息。

这是我正在尝试做的:

第一:select from l2 where p = "568700933"另一个集合中的 join 属性具有值p = 568700933;

第二select Entry from P where reference = p+";"

第三个返回条目和 p .

我不知道如何加入这个

当我尝试select from a , b时出现错误

我需要的是:

Select from  edge  node of key p = "568700933" , get the assosiated details from the document collection of the same key , knowing that the document collection had p = "568700933;"

OrientDB中没有JOIN,你就是做不到。查询仅接受单个目标。

在图形数据库中,将关系定义为边,而不是 pk/fk 和连接。 获得边缘后,您可以将 SELECT 与out()/in()函数一起使用或 MATCH 遍历它们 (http://orientdb.com/docs/2.2.x/SQL-Match.html(

[编辑] 这里有一个关于如何使用 OrientDB 执行此操作的实际示例。

假设您有两个顶点类ClassPClassQ以及称为ClassE的边类

首先,让我们创建架构:

CREATE CLASS ClassP EXTENDS V;
CREATE CLASS ClassQ EXTENDS V;
CREATE CLASS ClassE EXTENDS E;

现在让我们用一些数据填充它:

CREATE VERTEX ClassP SET name = 'foo';
CREATE VERTEX ClassP SET name = 'bar';
CREATE VERTEX ClassP SET id = 1;
CREATE VERTEX ClassP SET id = 2;

并通过边缘连接它们:

/* from "foo" to "1" */
CREATE EDGE ClassE  
FROM 
(SELECT FROM ClassP WHERE name = 'foo')
TO
(SELECT FROM ClassQ WHERE id = 1)
SET myEdgeProp = 'x';

/* from "foo" to "2" */
CREATE EDGE ClassE  
FROM 
(SELECT FROM ClassP WHERE name = 'foo')
TO
(SELECT FROM ClassQ WHERE id = 2)
SET myEdgeProp = 'y';

/* from "bar" to "2" */
CREATE EDGE ClassE  
FROM 
(SELECT FROM ClassP WHERE name = 'bar')
TO
(SELECT FROM ClassQ WHERE id = 2)
SET myEdgeProp = 'z';

现在我们可以按如下方式查询数据集:

/* get the name of a vertex and all the connected IDs */
SELECT name, out("ClassE").id FROM ClassP WHERE name = 'foo';

MATCH
{class:ClassP, as:a, where:(name = 'foo')} -ClassE-> {as:b}
RETURN a.name as name, b.id as id

/* return all the details for all the vertices */
MATCH
{class:ClassP, as:a, where:(name = 'foo')} -ClassE-> {as:b}
RETURN $elements

我希望它有所帮助

最新更新