我正在跟踪用户是否喜欢和/或对其他人发布的对象列表中的对象进行投票。我可以获得喜欢和投票,但不能同时获得两者。(一个人可以对一个对象点赞和投票,这些选项并不相互排斥)。
为了简单地解决这个问题,让我用关系术语来描述它(使用左连接 - 始终返回对象,仅当存在该类型的记录时才返回喜欢者和投票者数据)
[object]+ -> liker
+ -> voter
我想返回的是:
objectID likerID voterID
2343 null 88
2345 11 null
2382 44 1256
2400 null null
然而,我切的每一种方式都不能让它像那样出来。要么跳过第 2400 行(我已经尝试了 where 的每种组合),要么值甚至从 likerID 转移到 voterID 列(错误?)。
这是密码的示例:
start objects=node(158)
match contestant-[:POSTED]->object_node-[:POSTED_OBJECT]->objects<-[?:POSTED_OBJECT]-object_node_a<-[?:LIKES]-liker
, objects<-[?:POSTED_OBJECT]-object_node_b<-[?:VOTES]-voter
return id(object, id(liker), id(voter)
即使我尝试 where id(object_node_a) = id(object_node_b)... 它也不起作用
如果我只是想得到一个喜欢它的作品..与选民一样..但是当我尝试同时做这两个时..炸弹..
我试过使用 where 等,但最终我从来没有得到完整的对象列表——它要么根据匹配项修剪列表,要么给我一个 distinct 无法解析的笛卡尔积。
SQL 示例:左连接
我是一个 sql 人,所以让我这样解释一下——我在左边有一个对象表,我想把它加入到一个喜欢表和一个投票者表中,并返回喜欢者 ID 和投票者 ID单行以及对象数据。无论是否有投票者或喜欢者记录,都将返回所有对象记录。
[object]+ -> liker
+ -> voter
这甚至可能吗?
是否可以通过密码来做到这一点?