2012-01-12 2 views
0

I持って評価して商人からの引用(価格、コメント、雇用主はこの引用、...を受け入れた日付)、および他のテーブルを記憶する引用符で一つのテーブル(正/負、コメント、レーティングが提出された日付、...)。したがって、商人は0..nの見積もりと0..nの定格を持つことができます。ルビー/ MySQLは:クエリではなく、多くのユーザーの1人のユーザーしか返し

私は何を知りたい:商人が彼の引用は、雇用者によって承認されたていたんでしたどのように多くの評価

私の現在のアプローチ:

  • 第一クエリ(「引用符」)quotersのユーザーIDを見つけると雇用者が見積もりを受け入れ日付れることです。

  • 2クエリ(「評価」)はブロックの範囲内です。各卸売業者IDについて、照会は、見積もりが受け入れられた日付と等しいかまたは類似の格付けを取り出すべきである。

問題:

  • それは約70ユーザーからの評価を取得する必要がありますが、第二のクエリは、一人のユーザからのみ評価を取得します。誰でも考えている質問は何ですか?

コード:

#!/usr/bin/ruby 

require "mysql" 

begin 
    db_q = Mysql.real_connect("localhost", "root", "", "my_db") 
    quotes = db_q.query(" 
    SELECT q.user_id, q.accepted_at 
    FROM quotes q 
    INNER JOIN jobs j ON q.job_id = j.id 
    INNER JOIN categories_jobs cj ON j.id = cj.job_id 
    INNER JOIN categories c ON cj.category_id = c.id 
    INNER JOIN users u ON j.user_id = u.id 
    WHERE q.accepted_at IS NOT NULL 
    AND c.id = 8 
    ") 

    db_r = Mysql.real_connect("localhost", "root", "", "my_db") 
    quotes.each do |quote|  
    ratings = db_r.query("SELECT * FROM ratings WHERE assessee_id = #{quote[0]} AND CAST(created_at as DATE) <= '#{quote[1]}'") 
    ratings.each do |rating| 
     printf "%s, %s, %s, %s, %s, %s\n", rating[0], rating[2], rating[3], rating[4], rating[5], rating[6] 
    end 
    end 

    ratings.free 
    quotes.free 

rescue Mysql::Error => e 
    puts "Error code: #{e.errno}" 
    puts "Error message: #{e.error}" 
    puts "Error SQLSTATE: #{e.sqlstate}" if e.respond_to?("sqlstate") 
ensure 
    # disconnect from server 
    db_q.close if db_q 
    db_r.close if db_r 
end 

答えて

0

あなたが本当に生のSQLを実行する必要があるか、非常にあなたが使用できるライブラリ、ORMに限定されている場合を除き、ActiveRecordのように本当にSQLの毛の量を減らすことができます対処する必要があります。

+0

これはMySQLなので、続編はそれを減らすことができます。あなたはこのクエリを書くことができない場合、実際の@hebeを得る、いくつかの助けを使用してください。 – three

+0

クエリでは1人のユーザーの結果しか返されないため、すべてのユーザーを返すソリューションは遠くないと思いました。どのように続編でそれを削減するために@threeのヒント? – hebe

+0

@Paul Rubel:プロダクションからダンプを作成し、Sequel Proでデータの評価をしようとしました。だから私はこれまでのところ未処理のSQLに固執しています。実際にはRailsとは別にActive Recordを使用したことはありません。 – hebe

関連する問題