2015-11-12 3 views
1

'утро!OrientDB: псевдоним не работает?

Я заметил странное поведение псевдонимов в запросах: я выполнил этот запрос (обратите внимание на использование псевдонима в ИНЕКЕ)

SELECT traversedElement(1).start AS stime, traversedElement(2) AS destination 
FROM (TRAVERSE both('Involves') FROM #11:11052 WHILE $depth <= 2) 
WHERE @rid = #11:8395 
AND stime = DATE('31.10.2014 11:00:00') 

и я получил пустой результат, избегая при этом использования псевдоним stime в предложении WHERE вызывает запрос для получения правильного результата.

SELECT traversedElement(1).start AS stime, traversedElement(2) AS destination 
FROM (TRAVERSE both('Involves') FROM #11:11052 WHILE $depth <= 2) 
WHERE @rid = #11:8395 
AND traversedElement(1).start = DATE('31.10.2014 11:00:00') 

Кто-нибудь знает, что происходит? Алиасы не обрабатываются в предложениях WHERE?

ответ

1

@Alberto Если вы используете псевдоним, вы не можете использовать его немедленно в разделе where. У вас есть два различных способа выполнения вашего запроса

1)

select from (SELECT traversedElement(1).start AS stime, traversedElement(2) AS destination 
    FROM (TRAVERSE both('Involves') FROM #11:11052 WHILE $depth <= 2) 
    WHERE @rid = #11:8395) where stime = DATE('31.10.2014 11:00:00') 

2)

select start as stime,destination from (SELECT traversedElement(1).start, traversedElement(2) AS destination 
FROM (TRAVERSE both('Involves') FROM #11:11052 WHILE $depth <= 2) 
WHERE @rid = #11:8395 AND traversedElement(1).start = DATE('31.10.2014 11:00:00')) 
+0

я вижу, что это немного странно, так или иначе. Спасибо за ответ – Alberto

+0

Просто ради любопытства: можно ли использовать псевдонимы в предложениях GROUP BY? – Alberto

+0

Предложение GROUP BY или WHERE должно иметь такое же поведение с псевдонимом –