sql - 根据一组相关记录的条件获取记录

标签 sql ruby-on-rails ruby activerecord

我有两个类(class)

class Patient < ActiveRecord::Base
  belongs_to :camp
  has_many :vaccinations
end

class Vaccination < ActiveRecord::Base
  belongs_to :patient
end

每个疫苗接种都有名为 vaccine_id 的成员。 “完整”疫苗接种包括一组(比方说)6 种不同的疫苗,:names = {A,B,C,D,E,F}。

患者接种了很多疫苗,我想要一份所有接受“完整”疫苗接种的患者的报告。我可以使用 SQL 或 ActiveRecord 查询来获取此患者列表吗?

最佳答案

也许是这样的:

# in patient.rb
scope :with_completed_vaccinations, ->(number) {
  joins(:vaccinations).group('patients.id').
    having('COUNT(vaccinations.name) >= ?', number)
}

有了这个scope,您就可以编写如下查询:

Patient.with_completed_vaccinations(6)

关于sql - 根据一组相关记录的条件获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29786317/

相关文章:

mysql - 多次计数错误在哪里?

ruby-on-rails - 使用 --database=postgresql 时 Rails postgres 默认数据库用户

ruby-on-rails - 如何让 Heroku 在 Ubuntu 10.10 上工作(在 Windows 计算机上使用 VirtualBox)?

ruby-on-rails - Rails : . gitignore 仍在跟踪我的 database.yml 文件

MySQL:获取 View 中排序表中的行位置

mysql - 每个部门有多少雇主?

java - SELECT 和 WHERE 使用 PreparedStatement

ruby-on-rails - 在 Rails 4 中使用 FactoryGirl 创建模型实例时关闭观察者

java - Jruby 嵌入式模块和类

ruby - 如何列出已安装 gem 的内容?