在OrientDB中对不同边的属性执行计算

时间:2012-08-25 04:09:46

标签: graph-databases orientdb

我有这个独特的问题,我想根据不同边缘返回的值进行计算,看起来它似乎不适合我。

我的图表的功能是跟踪人们收集的Magic:The Gathering cards。请使用图表作为我的问题的插图。

graph

我想以#8:0作为起点,看看哪些牌组(MDeck)拥有牌(MCard)我拥有并计算我已经拥有的牌组的百分比我的收藏。我的查询开头是这样的:

SELECT FROM (SELECT FLATTEN(out[label="has"]) FROM #8:0) WHERE in.in.size() > 1

这是为了获得属于甲板的我拥有的牌。接下来,如果我有一张卡片比卡片上所需的更多,我只计算所需的卡片,所以我不得不使用MIN()。这就是出现问题的地方:

SELECT
MIN(UNION(in.in[label="includes"].qty, qty))
FROM (
    SELECT
    FLATTEN(out[label="has"])
    FROM #8:0
)
WHERE in.in.size() > 1

我认为这会解决问题,但它只返回null。我确保所有的数量字段都是整数。我错过了什么吗?

谢谢,

Ramon的

1 个答案:

答案 0 :(得分:0)

您是否拥有使用OrientDB控制台或Studio执行查询的公共数据库?

如果不能,您可以在此报告上次查询的中间结果吗?例如:

SELECT
in.in[label="includes"].qty
FROM (
    SELECT
    FLATTEN(out[label="has"])
    FROM #8:0
)
WHERE in.in.size() > 1

然后:

SELECT
UNION(in.in[label="includes"].qty, qty)
FROM (
    SELECT
    FLATTEN(out[label="has"])
    FROM #8:0
)
WHERE in.in.size() > 1