使用 select 从不同的 table 获取列值
Get column value from a different table using 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")
哪个returns:
#<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>]
我不知道为什么 prices
table 中的 p.cost
没有出现,这意味着我的 select 是错误的。我试过改成cost
,prices.cost
还是不行。
我的预期输出应该是
[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil, cost:{value here}>,
试试这个,在 select 中为成本分配一个别名
p.cost AS price_cost
然后通过variants.first.price_cost
获取
或者,只需从 attributes
获取它
variants.first.attributes['cost']
将return成本。
希望对您有所帮助!
我在我的交互器上有这个查询:
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")
哪个returns:
#<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>]
我不知道为什么 prices
table 中的 p.cost
没有出现,这意味着我的 select 是错误的。我试过改成cost
,prices.cost
还是不行。
我的预期输出应该是
[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil, cost:{value here}>,
试试这个,在 select 中为成本分配一个别名
p.cost AS price_cost
然后通过variants.first.price_cost
或者,只需从 attributes
variants.first.attributes['cost']
将return成本。
希望对您有所帮助!