SQLでは、whereはオプションです(存在しない)。これは、他のSELECTの結果がゼロの場合にのみ行を選択できるようにします。例えばNeo4j Cypher MATCH(存在しない場合)
:
SELECT
c.CustomerKey
FROM
Customer c, Sales s1, Date d
WHERE
s1.CustomerKey = c.CustomerKey AND
s1.OrderDateKey = d.DateKey AND
s1.ShipDate > s1.DueDate AND
NOT EXISTS (SELECT *
FROM Sales s2
WHERE s2.OrderDateKey = s1.OrderDateKey AND
s2.CustomerKey <> s1.CustomerKey)
GROUP BY
c.CustomerKey
私は、次の操作を実行しようとしましたが、クエリはので、私は、私はそれを間違った方法をやっていると仮定決して終わりません。私は何が欠けていますか?
MATCH (d1:Date)<-[:ORDERDATE]-(s1:Sales)-[:CUSTOMER]->(c1:Customer)
WHERE s1.ShipDate > s1.DueDate
WITH d1,s1,c1
MATCH (s2:Sales)-[:CUSTOMER]->(c2:Customer)
WHERE NOT(s2.OrderDateKey=s1.OrderDateKey AND c2.CustomerKey<>c1.CustomerKey)
RETURN c2.CustomerKey
CustomerKeyは顧客を一意に識別しますか? – InverseFalcon