Sequelize Postgres - Выберите поля не в группе - PullRequest
0 голосов
/ 10 января 2020
Offer.findAll({
  where: {
    userId: id
  },
  attributes: [
    "productDetailId",
    "id",
    "createdAt",
    "userId",
    [Sequelize.fn("MAX", Sequelize.col("offerPrice")), "offerPrice"]
  ],
  group: ["productDetailId"],
  include: [
    {
      model: ProductDetail
    }
  ]
})

У меня есть вышеуказанный запрос sequelize, цель которого найти offer с максимальным offerPrice для каждого ProductDetail и сгруппировать результаты по productDetailId. Выше работает в mysql, но выдает ошибку в postgres. Я подозреваю, что это потому, что оператор select содержит поля, которых нет в group by, что не разрешено postgres, но я не уверен, как это обновить.

ОБНОВЛЕНИЕ:

Сообщение об ошибке:

error": {
    "name": "SequelizeDatabaseError",
    "parent": {
      "name": "error",
      "length": 169,
      "severity": "ERROR",
      "code": "42803",
      "position": "43",
      "file": "parse_agg.c",
      "line": "1388",
      "routine": "check_ungrouped_columns_walker",

1 Ответ

0 голосов
/ 16 января 2020

У меня была похожая проблема, и группирование по всем столбцам в select не имело место.

Вам необходимо сгруппировать по столбцу, используя его имя с именем таблицы, поэтому

...
group: ["productDetail.productDetailId"],
...
...