使用 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'
使用 EXISTS
或 IN
执行此类任务:
select *
from employeegroup
where id in
(
select employee_group_id
from employeebenefits
where medical_plan_id = (select id from medicalplan where name = 'XYZ')
);
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'
使用 EXISTS
或 IN
执行此类任务:
select *
from employeegroup
where id in
(
select employee_group_id
from employeebenefits
where medical_plan_id = (select id from medicalplan where name = 'XYZ')
);