2016-12-25 12 views
-4

私が販売し、トップ10の項目を検索する必要があり、私が調査していると私はこれを可能にすることができ、トップと呼ばれる方法を見つけ、私はそれを適用しようとするが、私はこのエラーを取得:ルック

この検索を行うための最善の方法だろう何
SyntaxError (/home/luis/sites/AdvanceControld/app/models/detalleve.rb:38: syntax error, unexpected '(', expecting keyword_end 
    query = select top 10('detallevet.Article') 

売上データが得られたテーブルが詳述されている
def self.best_seller(params) 
    query = select top 10('detallevet.Article') 
      .joins('left outer join venta ON venta.Documento=detallevet.Docto and venta.RutaId=detallevet.RutaId') 
      .where("(venta.RutaId = :rutaId or :rutaId = '') AND (venta.IdEmpresa = :idempresa)",{rutaId: params[:search], idempresa: params[:search0]}) 
    query = query.where('venta.Fecha >= ? AND venta.Fecha <= ?', (params[:search1].to_date).strftime('%Y-%m-%d'), (params[:search2].to_date).strftime('%Y-%m-%d')) if params[:search1].present? and params[:search2].present? 
    query 
     end 

(詳細)と、この表Iは、日付などのデータを取得し、このため条column.I中の製品はベンタ(売却)にそれを関連していています。ベンタは、多くのdetallevetを持つことができ、detallevetが、これはdetallevetスキーマである

販売に属し:

create_table "DetalleVet", primary_key: "ID", force: :cascade do |t| 
    t.varchar "Article", limit: 50 
    t.integer "Docto",  limit: 4 
    t.money "Importe",      precision: 19, scale: 4 
    t.integer "RutaId",  limit: 4 
    t.varchar "IdEmpresa", limit: 50 
    end 

これは、私は次のようにして解決策を達成した

create_table "Venta", primary_key: "Id", force: :cascade do |t| 
    t.integer "RutaId",  limit: 4 
    .integer "Documento", limit: 4 
    t.datetime "Fecha" 
    t.varchar "IdEmpresa", limit: 50 
    end 
+5

役立つことを願っています。 'venta'と' detallevet'データベーステーブルのデータベーススキーマを投稿して、そのモデルの関連付けをどのように定義し、テーブルとカラム名に翻訳を追加するかを示してください。 – spickermann

+0

@spickermannお返事ありがとうございます。更新しました :) – LuisC

答えて

1

ベンタスキーマがあります商品と同じ商品の販売番号の両方を含むクエリ。私はそれは私があなたを助けようとしたといくつかのコードを書き始めていますが、あなたの列に名前を付けるために使用される言語を知らなくても、この質問に答えるために理解するのは難しいと私見ほとんど不可能である他の誰か

def self.bestseller 
     joins("INNER JOIN detallevet ON productos.Clave = detallevet.Articulo") 
      .select("detallevet.Articulo, COUNT(Articulo) as count, productos.Producto") 
       .group("detallevet.Articulo, productos.Producto").order("count DESC").limit(10) 
    end 
関連する問題