2016-01-07 2 views
3

Я не мог найти подобное сообщение, поэтому, если вы уже знаете один или мой вопрос не является правильным, сообщите мне.cyhper объединить две колонки в одну

У меня есть этот запрос,

MATCH 
    (t:Taxi {name:'Taxi1813'})<-[:ASSIGNED]-(u2:User)-[rd2:DROP_OFF]-> 
    (g2:Grid)-[r:TO*1..2]-(g:Grid)<-[rd:DROP_OFF]-(u:User)-[:ASSIGNED]->(t) 
WHERE ID(u2) < ID(u) AND rd2.time >= '04:38' AND rd2.time <= '04:42' 
WITH DISTINCT u2, g2, u, g, rd2, rd 
MATCH p=shortestPath((g2)-[r:TO*1..2]-(g)) 
WITH rd2, rd,u2, g2, u, g, p, REDUCE(totalTime = 0, x IN RELATIONSHIPS(p) | totalTime + x.time) AS totalTime 
WHERE totalTime <= 4 
RETURN u2.name, u.name 

Так что в конце концов я получил две колонок

u2.name u.name 
User179 UserTest 
User177 User179 

Есть ли способ или функция, чтобы объединить оба колонок в один и удалить дубликаты

Users 
User179 
User177 
UserTest 

Любые предложения? Спасибо

+0

BTW: Я думаю, что вы хотите «ID (u2) <> ID (u)» вместо 'ID (u2) cybersam

+0

Я собираюсь проверить его и сообщить, спасибо за ваше наблюдение. – andreahg

+0

Разница может быть тонкой. Если вы хотите, чтобы 'u' и' u2' были разными, вам необходимо внести это изменение. Ваш текущий код Cypher этого не делает. – cybersam

ответ

3

Вы можете комбинировать две коллекции в одну коллекцию, а затем возвращают только отдельные элементы.

with ['User179', 'User177'] as list1 
, ['UserTest', 'User179'] as list2 
unwind list1 + list2 as item 
return distinct item 
+0

Спасибо @DaveBennett это работает :) – andreahg

1

u2.name + u.name сочетает в себе список по

вы могли бы сделать что-то вроде «где u2.name не равна u.name (не правильный синтаксис)»

+0

Спасибо @Mvde за ваше предложение, я попробовал это u2.name <> u.name RETURN u2.name + u.name as Users. Но состояние не получилось, может быть, я что-то пропустил. Но я сделал это, используя предыдущий ответ, спасибо за ваше время, и я надеюсь увидеть вас в следующем сообщении :) – andreahg

Смежные вопросы