首页 > 解决方案 > 使用 select 从不同的表中获取列值

问题描述

我的交互器上有这个查询:

 Variant.where(code: context.codes)
        .joins("LEFT OUTER JOIN prices p
                ON p.variant_id = variants.id")
        .select("code,
                 actual_price,
                 selling_price,
                 p.cost")

返回:

#<Interactor::Context codes=["PRDCTA-V1", "PRDCTA-V2"], body=[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil>,
#<Variant id: nil, selling_price: #<BigDecimal:7ff1d13b9118,'0.1E3',9(18)>, code: "PRDCTA-V1", actual_price: nil>]

我不知道为什么p.costprices中没有出现,这意味着我的选择是错误的。我尝试将其更改为costprices.cost仍然无法正常工作。

我的预期输出应该是

[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil, cost:{value here}>,

标签: sqlrubypostgresqlruby-on-rails-4

解决方案


试试这个,在选择中为成本分配别名

p.cost AS price_cost

然后,通过variants.first.price_cost

或者,只是从attributes

variants.first.attributes['cost']

会返还费用。

希望有帮助!


推荐阅读