【问题标题】:fix consult, the records are duplicated修复咨询,记录重复
【发布时间】:2016-11-18 04:38:55
【问题描述】:

我正在运行查询以搜索与名为 Stock 的表无关的所有产品。Stock 表中的字段“Ruta”与 URL 中的 id 不同。我的做法如下:

 @productos = Producto.joins('left outer join stock on productos.Clave=stock.Articulo').select('productos.*,stock.Articulo').where('stock.ruta != ? AND productos.Status = ?', params[:id], "A")

此查询的问题是它向我显示重复的产品,具体取决于产品关联的库存数量,我该如何解决?

谢谢

【问题讨论】:

    标签: jquery ruby-on-rails ruby-on-rails-4


    【解决方案1】:

    尝试添加distinct:

    @productos = Producto.joins('left outer join stock on productos.Clave=stock.Articulo').select('productos.*,stock.Articulo').where('stock.ruta != ? AND productos.Status = ?', params[:id], "A").distinct

    或者你可以添加group('productos.Clave')

    【讨论】:

    • 它有效,但我有一个小问题,当产品与另一个具有不同“ruta”和“ruta”的股票相关时,我正在使用带有参数 id 的“ruta”搜索这些记录我正在经历的参数已经与那篇文章相关,查询一直给我带来同一篇文章,但是带有“ruta” id 参数的股票已经有文章,我该如何解决这个问题?
    • @LuisC 对不起,我不明白你想要什么。
    • 如果产品与 Stock 相关且“Ruta”(这是库存字段)等于我通过 url 发送的 id,则查询不应显示产品,但如果该产品还与具有不同“Ruta”的另一个股票相关 查询向我显示产品,但不应该。在这里我提出我的问题stackoverflow.com/questions/40687403/…
    【解决方案2】:

    你可以这样做

    Stock.includes(:products).where(products: { stock_id: nil })
    

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多