从同一个表mysql knex加入其他结果

时间:2018-05-03 06:37:41

标签: mysql join outer-join knex.js

我想从同一个表中获得与user_id匹配的其他event_id。我已尝试在leftJoin和outerLeftJoin中使用子查询和this.on函数。无法绕过并非独特的表/别名'以下代码出错。

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')
            )

1 个答案:

答案 0 :(得分:0)

在以各种方式搜索有关在同一个表上以不同方式获取数据的指导之后(不过在技术术语中表达了这一点),建议我在同一个表中使用别名。 Voila,快速简便,无需担心连接功能和子查询。

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')