2012-08-25 39 views
1

我有這個獨特的問題,我想根據不同邊緣返回的值進行計算,並且它看起來不像它適用於我。OrientDB中不同邊緣屬性的Perfoming計算

我的圖形的功能是跟蹤人們收集的魔術:收集卡。請用圖表來解釋我的問題。

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。我確保所有的數量字段都是整數。我錯過了什麼嗎?

感謝,

拉蒙

回答

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 
+0

我有這一切都在我的地方。第一個查詢給了我兩個4和4的結果集。第二個查詢給了我兩個[1,4]和[1,4]的結果集。我想在@ this.qty'大於它的時候找到一種方法來使用'in.in [label =「includes」]。qty'。 – voldomazta