mysql多表连续查询的问题
id name relation
1 n1 r1
2 n2 r2
3 n4 r1
4 n5 r1
5 n6 r2
6 n6 r1
表relation关系如上所示
其中relation字段,标示当前行与其他行的name字段之间的关系。比如name=n1与name=n4,name=n5,name=n6的数据,通过r1产生了一个“一次连接关系”。name=n2与name=n6的数据,通过r2产生了一个“一次连接关系”。n1与n2,分别通过r1和r2,与n6产生连接,那么我这边会定义n1与n2为“二次连接的关系”
现在我要通过sql查寻他们之前是否是“二次连接的关系”
利用thinkphp写的sql查询如下:
$where['jump_table.name'] = 'n1';
$where['land_table.name'] = 'n2';
$jump = M('relation')->alias('switch_table')
->join('LEFT JOIN relation AS jump_table ON switch_table.relation = jump_table.relation')
->join('LEFT JOIN relation AS land_table ON switch_table.relation = land_table.relation')
->where($where)
->field('switch_table.name')
->select();
这样查询出来的结果是空。
求大神赐教,这个sql该怎么写。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
那么n1与n2就产生了一个二次连接的关系。 这句话看不懂是什么意思
咳咳,我大致理解下你的这个表关系,即 R1 是同属级,同属级之间进行连接。但如果出现用户 N6 即同属 R1 级别又同属 R2 级别,则连接,并且 N6 所属的 R1 级别以及 R2 级别的所有成员也都互相成为连接关系?
尝试写个sql语句:
如果上面的语句有返回结果,代表存在二次连接关系
逻辑有点繁琐,凑活看吧,下面sql取到的name之间都是二次连接关系