|
Как с помощью 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 тоже нельзя передать?
|
|