2016-11-14 4 views
0

CASE条件から返された結果を注文しようとしています。しかし、このメッセージでエラーが発生しています:ORDER BYの値はNeo4jのCASE {}から戻ってきます

Variable `strength` not defined (line 8, column 104 (offset: 243)) 
"RETURN {strength:CASE WHEN p.strength IS NULL THEN r.strength ELSE p.strength*r.strength END} ORDER BY strength DESC LIMIT 3" 

エラーメッセージを見て、私は強度が特定されていないことを理解しています。

このケースの機能と一緒に注文する方法はありますか?

答えて

1

これはCASEでは問題ありません。問題は、ORDER BY句がRETURN句の識別子を参照する必要がありますが、RETURN句が識別子のないマップを返すことです。これで

(簡略スニペット)、マップは、識別子resを与え、そしてORDER BYはその識別子を使用している:

RETURN {strength: r.strength * CASE WHEN p.strength IS NULL THEN 1 ELSE p.strength END} AS res 
ORDER BY res.strength DESC 
LIMIT 3; 
関連する問題