I have a following Cypher query:
MATCH (parentD)-[:CONTAINS]->(childD:Decision)-[ru:CREATED_BY]->(u:User)
WHERE id(parentD) = 89592
OPTIONAL MATCH (childD)<-[:SET_FOR]->(sortValue89686:Value)-[:SET_ON]->(sortCharacteristic89686:Characteristic)
WHERE id(sortCharacteristic89686) = 89686
WITH ru, u, childD , sortValue89686
ORDER BY sortValue89686.value ASC, childD.name DESC
SKIP 0 LIMIT 100
RETURN ru, u, childD AS decision,
[ (parentD)<-[:DEFINED_BY]-(entity)<-[:COMMENTED_ON]-(comg:CommentGroup)-[:COMMENTED_FOR]->(childD) | {entityId: id(entity), types: labels(entity), totalComments: toInt(comg.totalComments)} ] AS commentGroups,
[ (parentD)<-[:DEFINED_BY]-(c1:Criterion)<-[:VOTED_ON]-(vg1:VoteGroup)-[:VOTED_FOR]->(childD) | {criterionId: id(c1), weight: vg1.avgVotesWeight, totalVotes: toInt(vg1.totalVotes)} ] AS weightedCriteria,
[ (parentD)<-[:DEFINED_BY]-(ch1:Characteristic)<-[:SET_ON]-(v1:Value)-[:SET_FOR]->(childD) | {characteristicId: id(ch1), value: v1.value, valueType: ch1.valueType, visualMode: ch1.visualMode} ] AS valuedCharacteristics
Right now the following part in this query:
OPTIONAL MATCH (childD)<-[:SET_FOR]->(sortValue89686:Value)-[:SET_ON]->(sortCharacteristic89686:Characteristic)
WHERE id(sortCharacteristic89686) = 89686
produces nulls for all pattern comprehension in the return statement. The commentGroups
, weightedCriteria
and valuedCharacteristics
are not null and contain values only for records where sortValue89686.value
is not null.
Instead of NULLs at the screenshot above I expect a values(for commentGroups
, weightedCriteria
and valuedCharacteristics
) for rows even when sortValue89686.value
is null.
What am I doing wrong and how to fix it ?
sortValue212
, but I don't see that anywhere in the query. Can you clarify what this is? – InverseFalconsortValue89686.value
. I have updated the question. – alexanoid