Mysql
 sql >> база данни >  >> RDS >> Mysql

Възможно ли е да се направи подзаявка със Sequelize.js?

Не мисля, че е възможен ясен отговор на въпроса ви. Вижте #1869 :

За да отговори на въпроса от заглавието, Sequelize автоматично ще генерира подзаявка (напр. #1719 ), но не можете да направите персонализирана подзаявка. Нямам авторитетна референция за негатив.

Изглежда, че вашата таблица е нещо подобно:

EssayStats
    EssayId
    EssayDate
    WordCount

Тогава можете да направите нещо подобно:

return EssayStat.findAll({
    attributes: [
        [sequelize.literal('((SELECT wordCount FROM "EssayStats" WHERE "EssayId" = "EssayStat"."EssayId" EssayStat BY "createdAt" DESC LIMIT 1) - (SELECT wordCount FROM "EssayStats" WHERE "EssayId" = "EssayStat"."EssayId" EssayStat BY "createdAt" ASC LIMIT 1))'), 'difference'],
        'EssayId'
    ],
    group: ['EssayId']
});

Всичко, което прави, е да изпълнява две SELECT заявки, като взема MAX и MIN от тези заявки след подреждане по вашата променлива, която ви интересува, и след това взема вашата разлика. Това ще ви даде това, което ви интересува:разликата в броя на думите между най-новата и първата версия.

Номерът тук е да капсулирате оператор SELECT в поле за атрибут.

Разбира се, по дяволите е разхвърлян и вероятно не е много по-добър от консервирания sequelize.query . Но отговаря на същината на въпроса ви.

По-добро решение може да бъде да денормализирате данните си и да съхранявате "wordCountDelta" директно във вашия модел на есе. След това можете да имате afterCreate кука за автоматично актуализиране на полето. Това най-вероятно би било и най-бързото решение.

Отговорих на нещо подобно тук .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да пренаредя колоните в MySQL Query Editor?

  2. Големомащабни добавки и изтривания Връзка много към много в Entity Framework

  3. Как да получите стойност от таблица, базирана на предпочитание

  4. mysql - заявка за три таблици

  5. Mysql подниз