如何在一个密码语句中实现多个子查询



下面的SQL代码完全符合我的要求。我想尝试使用Cypher做同样的事情。

select distances.userid as userid, dist/(sqrt(my.norm)*sqrt(users.norm)) as score
    from (select userid, 
    sum((user.rating)*(ratings.rating)) as dist
    from ratings, user
    where user.itemid = ratings.itemid
    group by userid) as distances, 
    (select userid, sum((rating)*(rating)) as norm 
    from ratings
    group by userid) as users, 
    (select sum((rating)*(rating)) as norm 
    from user) as my 
    where users.userid = distances.userid 
    order by score desc 
    limit 80;

在我的密码图中,用户和物品之间的密码关系"RATES"包含用户评分。cypher节点用户包含userid和用户的平均评分,在sql中是ratings.rating.

中的help。

我试图分别实现每个子查询,但我有麻烦,因为每个似乎都依赖于下一个,我不确定如何链接我的密码查询。

我如何在密码中实现这一点?

编辑 -------------------

成功翻译最后一个子查询。

SQL

select sum((rating)*(rating)) as norm 
from user

数码

MATCH (n)-[r:RATES]->(m)
WHERE n.userid = '1'
RETURN sum((toInt(r.rating))*(toInt(r.rating))) as norm

仍然不确定如何在主查询中使用

使用WITH语句连接子查询。

从neo4j备忘单中引用:

WITH语法类似于RETURN。它将查询部分分开显式地,允许您声明要结转到哪些标识符下一部分

WITH的neo4j手册页在这里

最新更新