2016-11-18 8 views
0

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") 

このクエリでの問題は、それが私はそれをどのように解決することができ、製品が関連付けられている銘柄の量に応じて、私に繰り返し製品を示しているということでしょうか?

おかげ

答えて

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')

+0

のようにそれは動作しますが、私は小さなを持ってそれを行うことができます問題は、私はこれらのレコードを "r私がパラメータを使っている "ルタ"が既にその記事に関連している場合、クエリは同じ記事を持ち続けますが、株式"ruta" id paramsには既に記事がありますが、どうすればこの問題を解決できますか? – LuisC

+0

@LuisC申し訳ありませんが、私はあなたが欲しいものを理解していません。 –

+0

商品が在庫に関連していて、URLを送信しているIDと等しい「Ruta」(これは在庫です)の場合、クエリは商品を表示すべきではありませんが、この商品も別の商品に関連している別の "Ruta"の在庫クエリは私に製品を示しますが、そうではありません。ここで私は私の質問を置くhttp://stackoverflow.com/questions/40687403/search-records-by-query-consult – LuisC

1

を追加することができます

Stock.includes(:products).where(products: { stock_id: nil }) 
関連する問題