упорядочить поиск с помощью соединения или подзапроса

#mysql #node.js #sequelize.js

Вопрос:

Я пытаюсь разработать поисковый API.

Получите значение ключевого слова от клиента и включите данные, если они содержат какие-либо из programs.title, programs.description и companies.name.

Я хочу получить данные из такой таблицы(MySQL):

Схема таблицы

Программы

Клавиша ценность
ID целое число(pk)
Компании целое число(compaanies.id)
Название строка
Описание строка

компании

Клавиша ценность
ID целое число(pk)
Имя строка

Это необработанный запрос с результатами, которые я хочу:

 SELECT * FROM (SELECT *, (SELECT name FROM companies WHERE companiesId = companies.id) AS companiesName FROM programs) as program
WHERE program.title LIKE '%${keyword}%'
OR program.description LIKE '%${keyword}%'
OR program.companiesName LIKE '%${keyword}%'
 

Но я хочу разработать это с помощью построителя запросов sequelize. (На самом деле объединяется больше таблиц, и иерархическая структура, возвращаемая sequelize, уже используется интерфейсом. Я просто хочу добавить companies.name к функции поиска.)

Код, за исключением companies.name является:

 models.program.findAll({
  where: {
    [Op.or]: {
      title: {
        [Op.like]: `%${keyword}%`,
      },
      description: {
        [Op.like]: `%${keyword}%`,
      },
    },
  },
  include: [{
    model: models.company,
  }],
})
 

Как я могу получить результат?