Les splices UNION renvoient des valeurs ayant le même alias à partir de deux clauses RETURN, en les concaténant et en dédupliquant les lignes unies par ces valeurs de retour.
Syntaxe :
... RETURN <expression1_A>
as <alias_A>
, <expression1_B>
as <alias_B>
, ...
UNION
... RETURN <expression2_A>
as <alias_A>
, <expression2_B>
as <alias_B>
, ...
Entrée :
<expression1>
: Valeurs de retour du 1er RETURN<expression2>
: Valeurs de retour du 2ème RETURN, doivent avoir le même nombre de valeurs de retour que le 1er RETURN et la même structure de données pour chaque même alias<alias>
: L'alias de la valeur de retour (ordre différent permis)
Par exemple, concaténer des valeurs de retour hétérologues a et b et dédupliquer les lignes :
uncollect [1,2,3] as a
uncollect [3,4,5] as b
return a, b
union
uncollect [1,2] as a
uncollect [3,5] as b
return a, b
Graphe d'exemple : (à utiliser pour les exemples suivants)
Exécutez les UQLs ci-dessous un par un dans un graphset vide pour créer des données de graphe :create().node_schema("student").node_schema("course")
create().node_property(@*, "name").node_property(@student, "age", int32).node_property(@course, "credit", int32)
insert().into(@student).nodes([{_id:"S001", _uuid:1, name:"Jason", age:25}, {_id:"S002", _uuid:2, name:"Lina", age:23}, {_id:"S003", _uuid:3, name:"Eric", age:24}, {_id:"S004", _uuid:4, name:"Emma", age:26}, {_id:"S005", _uuid:5, name:"Pepe", age:24}])
insert().into(@course).nodes([{_id:"C001", _uuid:6, name:"French", credit:4}, {_id:"C002", _uuid:7, name:"Math", credit:5}])
insert().into(@default).edges([{_uuid:1, _from_uuid:1, _to_uuid:6}, {_uuid:2, _from_uuid:2, _to_uuid:6}, {_uuid:3, _from_uuid:3, _to_uuid:6}, {_uuid:4, _from_uuid:2, _to_uuid:7}, {_uuid:5, _from_uuid:3, _to_uuid:7}, {_uuid:6, _from_uuid:4, _to_uuid:7}, {_uuid:7, _from_uuid:5, _to_uuid:7}])
Utilisation Courante
Exemple : Trouver les étudiants pas plus âgés que 24 ans qui choisissent le cours de Français, et aussi les étudiants au moins âgés de 24 ans qui choisissent le cours de Mathématiques, retourner ces étudiants après déduplication
n({@course.name == "French"}).e().n({@student.age <= 24} as n) return n.name
union
n({@course.name == "Math"}).e().n({@student.age >= 24} as n) return n.name
Lina
Eric
Pepe
Emma