Unidirektional -[l:L]-> von rechts nach links
MATCH (h1:Haltestelle {name: 'SpichernStr'})-[l:L]->(h2:Haltestelle)
RETURN h1, l, h2;
Unidirektional <-[l:L]- von links nach rechts
MATCH (h1:Haltestelle {name: 'SpichernStr'})<-[l:L]-(h2:Haltestelle)
RETURN h1, l, h2;
Bidirektional -[l:L]-
MATCH (h1:Haltestelle {name: 'SpichernStr'})-[l:L]-(h2:Haltestelle)
RETURN h1, l, h2;
MATCH (h1:Haltestelle {name: 'SpichernStr'})-[l:L]->(h2:Haltestelle)
RETURN h1.name, h2.name, l.distanz
ORDER BY h1.name, h2.name;
MATCH (s:Stop)-[ih:IH]->(h:Haltestelle {name: 'SpichernStr'})
RETURN s, ih, h;
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
<-[ih1:IH]-(s1:Stop)
-[n:N]->(s2:Stop)
-[ih2:IH]->(h2:Haltestelle)
RETURN s1, ih1, h1, n, s2, ih2, h2
ORDER BY s1.abfahrt;
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
<-[:IH]-(s1:Stop WHERE s1.abfahrt > localtime('10:08'))
-[:N]->(s2:Stop)
-[:IH]->(h2:Haltestelle)
RETURN
h1.name as abfahrtVon, s1.abfahrt as umAbfahrt,
h2.name as ankunftAn, s2.ankunft as umAnkunft
ORDER BY s1.abfahrt;
Problem
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
-[l1:L]->(h2:Haltestelle)
-[l2:L]->(h3:Haltestelle {name: 'ZoologischerGarten'}),
(h2)<-[:IH]-(s:Stop)
RETURN h2.name, s;
Derselbe Effekt kann mit der mehrfachen Verwendung von MATCH erzielt werden
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
-[l1:L]->(h2:Haltestelle)
-[l2:L]->(h3:Haltestelle {name: 'ZoologischerGarten'})
MATCH
(h2)<-[:IH]-(s:Stop)
RETURN h2.name, s;
MATCH und Komma haben unterschiedliches Verhalten
Variante mit zweimal MATCH
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
-[l:L]->
(h2:Haltestelle {name: 'AugsburgerStr'})
MATCH
(h1)-[l:L]->(h2)
RETURN h1.name, h2.name, l.distanz;
Variante mit Komma
MATCH
(h1:Haltestelle {name: 'SpichernStr'})
-[l:L]->
(h2:Haltestelle {name: 'AugsburgerStr'}),
(h1)-[l:L]->(h2)
RETURN h1.name, h2.name, l.distanz;
Die Abfrage ermittelt die Anzahl der Stops pro Haltestelle
MATCH (s:Stop)-[ih:IH]->(h:Haltestelle)
WITH h.name as haltestelle, count(*) as anzahlStops
WHERE anzahlStops > 1
RETURN haltestelle, anzahlStops;