如何用Cypher查询用户搭建乐高套装的缺失零件及数量?
查询用户搭建乐高套装缺少的零件及数量
要计算用户搭建指定乐高套装时缺少的零件和对应数量,你可以通过关联产品需求零件、用户拥有零件的数量差值来实现,以下是具体的Cypher查询语句:
SELECT * FROM cypher('LegoGraph', $$ MATCH (u:User {name: 'Bob'}), (prod:Product {number: 60239})-[req:REQUIRES]->(piece:Piece) OPTIONAL MATCH (u)-[owns:OWNS]->(piece) WITH piece.number AS piece_number, req.qty AS required_qty, COALESCE(owns.qty, 0) AS owned_qty, (req.qty - COALESCE(owns.qty, 0)) AS missing_qty WHERE missing_qty > 0 RETURN piece_number, missing_qty ORDER BY missing_qty DESC $$) AS (piece_number agtype, missing_qty agtype);
语句说明:
MATCH定位目标用户、目标产品,以及产品所需的所有零件和对应需求数量OPTIONAL MATCH可选匹配用户拥有该零件的关系(如果用户没有该零件,owns.qty会是NULL)COALESCE(owns.qty, 0)将未拥有的零件数量默认设为0,避免计算错误- 通过
req.qty - owned_qty计算缺少的数量,用WHERE missing_qty > 0过滤出真正缺少的零件 - 最终返回零件编号和缺少数量,可按需调整排序规则
你可以根据实际需求替换User的name和Product的number参数,适配不同用户和产品的查询场景。
内容的提问来源于stack exchange,提问作者Matheus Farias
相关产品推荐
相关产品推荐

