Имя: Пароль:
IT
Веб-мастеринг
Как с помощью sequelize (ну, или других ORM) получить запрос такого вида?
0 Fragster
 
гуру
07.07.17
09:52
Хочу получить что-то типа

SELECT
`template`.`id`,
...
(SELECT COUNT(*) FROM `templateSets` WHERE `template`.`id` = `templateSets`.`templateId`) AS `setCount`
FROM `templates` AS `template`


Вот так неправильно:

models.template.findAll({
    include: [{
      model: models.templateSet,
      attributes: [[models.sequelize.fn('COUNT', models.sequelize.col('*')), 'setCount']]
    }]
  })

, оно лепит джоин и включает templateSets.id в список полей, не совсем то, что нужно
1 Вафель
 
07.07.17
10:21
есть же
sequelize.literal(...)
2 Fragster
 
гуру
07.07.17
10:45
(1) есть. но тогда надо знать имена колонок связи.
3 Вафель
 
07.07.17
10:48
(2) а он произвольные каждый раз рисует?
4 Вафель
 
07.07.17
10:51
Но в доке про correlated subquery ни слова нет.
5 Fragster
 
гуру
07.07.17
11:17
(3) ну я хз, что там в модели поменять могут
6 Fragster
 
гуру
07.07.17
11:22
кстати, необязательно subquery делать, можно сделать
SELECT
template.id,
...
COUNT(templateSets.*) AS setCount
FROM templates AS template
LEFT JOIN templateSets ON template.id = templateSets.templateId)

Вроде как мускуль сам сделает нужную группировку. Только вот такой запрос тоже не получается :)
7 Вафель
 
07.07.17
11:27
(6) А что group by тоже нельзя передать?