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
これはMySQLなので、続編はそれを減らすことができます。あなたはこのクエリを書くことができない場合、実際の@hebeを得る、いくつかの助けを使用してください。 – three
クエリでは1人のユーザーの結果しか返されないため、すべてのユーザーを返すソリューションは遠くないと思いました。どのように続編でそれを削減するために@threeのヒント? – hebe
@Paul Rubel:プロダクションからダンプを作成し、Sequel Proでデータの評価をしようとしました。だから私はこれまでのところ未処理のSQLに固執しています。実際にはRailsとは別にActive Recordを使用したことはありません。 – hebe