Bonjour Bastien,
Bien grosse cette requête, pas facile à lire...
Du coup, j'ai cherché l'opération qui pouvait causer la rupture de données.
Les clauses Optional Match fonctionnent bien comme on l'entend.
Par-contre, une instruction UNWIND sur une liste vide, ne retourne, rien...
J'ai fait l'essai avec ce bout de requête :
MATCH (account:Account)
WHERE (account.Id = "1")
WITH account, "2016-08-23T22:00:00Z" as startDate,"2016-07-31T22:00:00Z" as endDate
OPTIONAL MATCH (v)-[swim:SWIM]-(sw:Swimmer)
WHERE swim.Start < startDate
OPTIONAL MATCH (v)-[swam:SWAM]-(sw1:Swimmer)
WHERE swam.Start < startDate
AND swam.End > endDate
WITH account,collect(sw) + collect(sw1) AS swimmerList, startDate, endDate
UNWIND swimmerList as sll
RETURN account,sll
Si vous retirez le UNWIND, vous retrouvez des résultats... Il conditionne le nombre de lignes retournées à l'instruction suivante. Si la liste est vide, il ne retourne aucune ligne.
J'en ai profité pour mettre vos dates en constantes...
En espérant avoir pu vous aider,
Sylvain