使用 SQL 的多对多查询

Many-to-Many query using SQL

EmployeeGroups 有很多 MedicalPlans。 MedicalPlans 有很多 EmployeeGroup(多对多关系)。他们通过 EmployeeBenefits 连接 table

EmployeeGroup
:id
:name

MedicalPlan
:id
:name

EmployeeBenefits
:id
:employee_group_id
:medical_plan_id

有谁知道我可以用来检索拥有特定 MedicalPlan 的所有 EmployeeGroups 的查询吗?

我认为 INNER JOIN 在这里不起作用,因为它们没有共同的属性。如有任何帮助,我们将不胜感激!

是的,内部联接有效

select eg.name
from EmployeeGroup eg
join EmployeeBenefits eb on eb.employee_group_id = eg.id
join MedicalPlan mp on eb.medical_plan_id = mp.id
where mp.name = 'my plan'

使用 EXISTSIN 执行此类任务:

select *
from employeegroup
where id in
(
  select employee_group_id
  from employeebenefits
  where medical_plan_id = (select id from medicalplan where name = 'XYZ')
);