0
我有在部門聘請的員工常見的場景:OrientDB:如何返回從第一或第二查詢結果(如果第一個返回行)
- 僱員的上級部門通過
MY_PARENT_IS
關係 - 設置部門對其父部門使用同樣的關係。
特定僱員的經理可以是:
- 直接設置使用
IS_SPECIFIED_LEADER_FOR
被設置爲
- 第一人(我們從給定的員工上去結構直到我們找到一個與
IN_CHARGE_PERSON
關係集的部門)。
IN_CHARGE_PERSON
對員工的上級部門
結構示例:
爲了實現這個目標我有2個疑問:
1查詢來獲取指定的領導者的人:
SELECT expand(manager) FROM (MATCH {class:HRUnitPersonCompany,
where: (Name = 'Sales Berseker 1' AND in('IS_SPECIFIED_LEADER_FOR').size() > 0)}.in('IS_SPECIFIED_LEADER_FOR')
{as: manager} RETURN manager)
第二查詢發現第一個經理結構(IN_CHARGE_PERSON
)
SELECT expand(manager) FROM (MATCH {class:HRUnitPersonCompany,
where: (Name = 'Sales Berseker 1')}.out('MY_PARENT_IS')
{while: (out('IN_CHARGE_PERSON').size() == 0),
where: (out('IN_CHARGE_PERSON').size() > 0)}.out('IN_CHARGE_PERSON')
{as: manager} RETURN manager)
問題是如何將這兩個查詢合併到1語句中,該語句將返回第一個或第二個結果的結果,但僅在第一個結果返回沒有結果?
我打得四處LET,但不能得到這方面的工作100%(此蒙上查詢解析錯誤):
SELECT if($specMgr.size()>0,$specMgr,$depMgr)
LET $specMgr = (SELECT expand(manager) FROM (MATCH {class:HRUnitPersonCompany,
where: (Name = 'Sales Berseker 1' AND in('IS_SPECIFIED_LEADER_FOR').size() > 0)}.in('IS_SPECIFIED_LEADER_FOR')
{as: manager} RETURN manager)),
$depMgr = (SELECT expand(manager) FROM (MATCH {class:HRUnitPersonCompany,
where: (Name = 'Sales Berseker 1')}.out('MY_PARENT_IS')
{while: (out('IN_CHARGE_PERSON').size() == 0),
where: (out('IN_CHARGE_PERSON').size() > 0)}.out('IN_CHARGE_PERSON')
{as: manager} RETURN manager))
問題是與條件,當我刪除的比較,那麼至少沒有錯誤報道,但不能按預期工作。爲什麼我不能在if語句中使用.size() > 0
比較?