Оставить соединение с условием if в Sequelize - PullRequest
0 голосов
/ 28 марта 2019

У меня есть две таблицы Tour и Schedule, таблица Schedule содержит поле dt для даты в ней, это может быть будущая дата или прошедшая дата. И у каждого тура тоже есть рейтинг. Я хочу найти все заказы туров по s.dt и t.rating. Я пишу некоторый сырой SQL-запрос, но я хочу преобразовать его в sequelize.

необработанный запрос: -

    select t.tour_id, 
    IF(s.dt >= DATE_ADD(NOW(), INTERVAL 1 DAY), "true", "flase") 
    hasSchedule, 
    IFNULL(t.avg_rating, 0) rating 
    FROM Tour t LEFT JOIN Schedule s ON t.tour_id = s.tour_id 
    WHERE t.progress = 100 AND tour_activation = 'true' 
    GROUP BY t.tour_id order by hasSchedule DESC, rating DESC;

То, что я пробовал, это запрос Sequelize: -

        Tour.findAll({
            where: {
                visible: 'true',
                tour_activation: 'true'
                // '$Schedules.dt$': { $gte: (new Date()) }
            },
            order: [ [Schedule.associations.dt, 'avg_rating', 'DESC'] ],
            include: [
                {
                    model: Schedule
                    /* where:  {
                        dt: {
                            $gte: (new Date())
                        },
                        booked: 'false'
                    }*/
                }
            ],
            limit,
            offset

        }).then((data) => {}

Но это не работает. Помоги мне в этом.

...