Sql 如何计算由“启动”驱动的未启动选项;竖起大拇指;不返回数组的gem
投票Sql 如何计算由“启动”驱动的未启动选项;竖起大拇指;不返回数组的gem,sql,ruby-on-rails,ruby,rails-models,Sql,Ruby On Rails,Ruby,Rails Models,投票有很多问题,问题有很多选项,选项 我试图通过SQL计算未引导的选项,而不返回数组 这项工作 [22] pry(main)> unvoted = Option.tally.where('question_id = ?', 3).having('COUNT(votes.id) = 0') Option Load (0.3ms) SELECT options.*, COUNT(votes.id) AS vote_count FROM "options" LEFT OUTER JOIN
有很多
问题,问题有很多
选项,选项
我试图通过SQL计算未引导的选项,而不返回数组
这项工作
[22] pry(main)> unvoted = Option.tally.where('question_id = ?', 3).having('COUNT(votes.id) = 0')
Option Load (0.3ms) SELECT options.*, COUNT(votes.id) AS vote_count FROM "options" LEFT OUTER JOIN votes ON options.id = votes.voteable_id WHERE (question_id = 3) GROUP BY options.id, options.content, options.question_id, options.created_at, options.updated_at HAVING COUNT(votes.id) = 0 ORDER BY vote_count DESC
但是当我这样做的时候,我得到了一个错误
[23] pry(main)> unvoted_count = Option.tally.where('question_id = ?', 3).having('COUNT(votes.id) = 0').count
(0.5ms) SELECT COUNT(options.*, COUNT(votes.id) AS vote_count) AS count_options_all_count_votes_id_as_vote_count, options.id, options.content, options.question_id, options.created_at, options.updated_at AS options_id_options_content_options_question_id_options_created_at_options_updated_at FROM "options" LEFT OUTER JOIN votes ON options.id = votes.voteable_id WHERE (question_id = 3) GROUP BY options.id, options.content, options.question_id, options.created_at, options.updated_at HAVING COUNT(votes.id) = 0 ORDER BY vote_count DESC
ActiveRecord::StatementInvalid: SQLite3::SQLException: near "*": syntax error: SELECT COUNT(options.*, COUNT(votes.id) AS vote_count) AS count_options_all_count_votes_id_as_vote_count, options.id, options.content, options.question_id, options.created_at, options.updated_at AS options_id_options_content_options_question_id_options_created_at_options_updated_at FROM "options" LEFT OUTER JOIN votes ON options.id = votes.voteable_id WHERE (question_id = 3) GROUP BY options.id, options.content, options.question_id, options.created_at, options.updated_at HAVING COUNT(votes.id) = 0 ORDER BY vote_count DESC
from /usr/lib/ruby/gems/2.3.0/gems/sqlite3-1.3.11/lib/sqlite3/database.rb:91:in `initialize'
我也试过这个,我不知道为什么忽略条件,为什么
[14] pry(main)> Option.count(:conditions => "question_id = 3 AND HAVING COUNT(votes.id) = 1")
(0.3ms) SELECT COUNT(*) FROM "options"
3
这也忽略了条件
Option.count(:conditions => "question_id = 3 AND COUNT(votes.id) = 1")