连接来自同一个表mysql knex的其他结果

8hhllhi2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(436)

我想买其他的 user_id 来自与 event_id s。我试过使用子查询和 this.on 在leftjoin和outerleftjoin中函数。无法用下面的代码绕过“not unique table/alias”错误。

knex('user_2_event')
            .select(
                'event.*',
                'user_2_event.user_id as main_user_id'
            )
            .where('user_2_event.user_id',17)
            .join('event', 'event.event_id', 'user_2_event.event_id')
            .leftOuterJoin('user_2_event', function(){
                this.on('user_2_event.event_id', '=', 'event.event_id') 
            })

或者用这个代替上面的leftouterjoin,它会产生一个“语法错误”。

.join(
                knex('user_2_event')
                .select('user_2_event.user_id as other_user')
                .where('user_2_event.event', '=','event.event_id')
            )
e3bfsja2

e3bfsja21#

在以各种方式搜索同一个表上不同方式获取数据的指南(但是有人用技术术语表示),有人建议我在同一个表上使用别名。瞧,又快又简单,不用担心连接函数和子查询。

knex('user_2_event as e1')
            .select(
                'event.*',
                'e1.user_id as user_id',
                'e2.user_id as other_id'
            )
            .where('e1.user_id',17)
            .join('event', 'event.event_id', 'e1.event_id')
            .leftJoin('user_2_event as e2', 'e2.event_id', 'event.event_id')

相关问题