Объединение других результатов из той же таблицы. - PullRequest
0 голосов
/ 03 мая 2018

Я хотел бы получить другие user_id s из той же таблицы, которые соответствуют event_id s. Я пытался с подзапросом и this.on функции в leftJoin и outerLeftJoin. Не удалось обойти ошибку «неуникальная таблица / псевдоним» с кодом ниже.

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 голосов
/ 03 мая 2018

После поиска различными способами руководства по получению данных разными способами в одной и той же таблице (однако это выражается в технических терминах), мне было предложено использовать псевдонимы в одной и той же таблице. Вуаля, быстро и легко, не беспокоясь о функциях соединения и подзапросах.

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