我对我的交互者有这样的疑问:

 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.cost没有出现,这意味着我的选择是错误的。我试图将其更改为pricescost仍然不起作用。
我的预期产出应该是
[#<Variant id: nil, selling_price: nil, code: "PRDCTA-V2", actual_price: nil, cost:{value here}>,

最佳答案

请在选择“将别名分配给成本”中尝试此操作

p.cost AS price_cost

然后,通过variants.first.price_cost
或者,从attributes
variants.first.attributes['cost']

将退还费用。
希望能有帮助!

关于sql - 使用select从其他表中获取列值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57637986/

10-15 20:37