У меня есть список списков компонентов. Для каждого списка компонентов мне нужно сопоставить pno12 с каждым компонентом и найти неделю структуры, связанную с этим компонентом, а затем вернуть самую высокую неделю структуры в каждом списке компонентов. Пока это запрос, который у меня есть, но он раскручивается
with [['000063', '000752', 'R78000', '000854', '000869', '000273', 'P0010', '71700'],
['71700', '000273', '000869', '000063', '000752', 'P0010', 'R78000', '000854']] as names_list
unwind names_list as names
MATCH (p:PNO12{name:"2021110536L4120D110"})
OPTIONAL MATCH (p)-[:OFFERS]->(n)
WHERE (n.name IN names)
AND NOT (n.from_week IS NULL OR n.to_week IS NULL)
AND NOT (n.from_week = "000000" OR n.to_week = "000000")
WITH COLLECT(n)+COLLECT(p) AS cmps
UNWIND cmps as c
RETURN c.from_week
ORDER BY c.from_week DESC
LIMIT 1
, но это дает мне 1 результат
c.from_week
"202045"
, тогда как мне нужна последняя неделя структуры (поэтому я и сортирую ) по списку во вложенном списке. У кого-нибудь есть какие-нибудь намеки на то, как мне этого добиться? Моя первоначальная мысль заключалась в том, что раскрутка будет запускать матч отдельно для каждого внутреннего списка, но, очевидно, это не так. Я новичок в этом :)
Я не знаю, лучше ли это попробовать, но это все еще не работает, но может помочь вам лучше понять, что я пытаюсь сделать
with [['000063', '000752', 'R78000', '000854', '000869', '000273', 'P0010', '71700'], ['71700', '000273', '000869', '000063', '000752', 'P0010', 'R78000', '000854'] ] as names_list
unwind names_list as names
match (p:pno12{name:"2021110536L4120D110"})
OPTIONAL MATCH (p)-[:OFFERS]->(n)
WHERE (n.name IN names)
AND NOT (n.from_week IS NULL OR n.to_week IS NULL)
AND NOT (n.from_week = "000000" OR n.to_week = "000000")
with collect(n.from_week) as weeks
return names, weeks
order by weeks desc limit 1