【问题标题】:Sequelize query. Multiple count depends on column name续集查询。多个计数取决于列名
【发布时间】:2022-11-12 19:19:15
【问题描述】:

我有工作查询:

const count = await models.CompanyProductionUnitNonCeased
    .count({
        distinct: true,
        col: 'company_id',
        include: [{
            required: true,
            model: models.ProductionUnitCore,
            as: "production_unit",
            include: [{
                required: true,
                model: models.ProductionUnitAddress,
                as: 'production_unit_addresses',
                where: { is_current: true },
                include: [{
                    required: true,
                    model: models.AddressAddress,
                    as: 'address',
                    include: [{
                        required: true,
                        model: models.GeograpicalAdministrativeAreas,
                        as: 'geograpical_administrative_areas',
                        include: [{
                            required: true,
                            model: models.Region,
                            as: 'region_code_region',
                            where: {code: [1081, 1082]}
                        }],
                    }]
                }]
            }]
        }]
    })

它返回所有列的总数代码=1081 和 1082在 ”地区“ 桌子。

在 ”地区" 表中的 "code" 行有 5 个不同的代码。它是 GeograpicalAdministrativeAreas 表的主键。

我需要计算每列分隔的数量(不仅是现在的 1081 和 1082)。

所以我想以这种方式得到结果(或者代替代码,我们可以使用行“名称”):

[{
  1081: 1001,
  1082: 2002,
  1083: 2222,
  1084: 4344,
  1085: 143434
 }]

【问题讨论】:

  • 这个问题写的很烂。看来作者不清楚行和列的定义,并且似乎可以互换使用它们。 “代码”是表格中的一列。
  • @EricKassan 我写了(有“代码”行)什么不清楚?对于更明确的问题,我应该添加什么?

标签: javascript sql sequelize.js


【解决方案1】:

回答:

const groupedAmount = await models.CompanyProductionUnitNonCeased
        .findAndCountAll({
            raw: true,
            distinct: true,
            col: request.aggregate_on === 'cvr' ? 'company_id' : 'production_unit_id',
            attributes: [
                // [sequelize.literal(`DISTINCT company_id`), 'company_id'],
                `production_unit.production_unit_renteds.address.geograpical_administrative_areas.${stringByGroup}.name`,
                `production_unit.production_unit_renteds.address.geograpical_administrative_areas.${stringByGroup}.code`,
                [sequelize.fn('COUNT', `production_unit.production_unit_renteds.address.geograpical_administrative_areas.${stringByGroup}.code`), 'count']
            ],
            group: [
                `production_unit.production_unit_renteds.address.geograpical_administrative_areas.${stringByGroup}.name`,
                `production_unit.production_unit_renteds.address.geograpical_administrative_areas.${stringByGroup}.code`],
            include: [{
                model: models.CompanyCore,
                as: 'company',
                required: true,
                attributes: [],
                where: { id: filters.companyIds }
            }, {
                attributes: [],
                required: true,
                model: models.ProductionUnitCore,
                as: "production_unit",
                include: [{
                    attributes: [],
                    required: true,
                    model: models.ProductionUnitRented,
                    as: 'production_unit_renteds',
                    where: { is_current: true },
                    include: [{
                        attributes: [],
                        required: true,
                        model: models.AddressAddress,
                        as: 'address',
                        include: [{
                            attributes: [],
                            required: true,
                            model: models.GeograpicalAdministrativeAreas,
                            as: 'geograpical_administrative_areas',
                            include: [{
                                required: true,
                                model: models.Region,
                                as: 'region_code_region',
                                attributes: []
                            }]
                        }]
                    }]
                }]
            }]
        })

【讨论】:

    猜你喜欢
    • 2018-07-15
    • 1970-01-01
    • 2012-08-02
    • 2018-10-16
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多