我有一个表机械师,其行如
A Bike Repair
A Car Repair
B Bike Repair
B Car Repair
B Oil Change
C Oil Change
另一个表技能要求
Bike Repair
Oil Change
Car Repair.
需要编写查询以获取具有SkillsRequired表中列出的所有技能的机械师的所有名称。
ANS:只有B必须在结果中,因为只有B具有所需的全部3项技能。 PS:了解一个解决方案,让他们感到厌倦,并且数量可能并不完全正确。
感谢@inquisitive_mind提供以下解决方案。但我们能以不同的方式制定这个吗?我需要另一个查询,它完全按照以下查询执行操作。
select MechName from Skills a join Mechanic b
on a.Skills = b.MechSkill
group by Mechname
having count(MechSkill) = (select count(*) from Skills)
答案 0 :(得分:0)
我正在编辑我的回复,以便您也可以搜索项目组合。
SELECT MechName, COUNT(DISTINCT Skill)
FROM Mechanic
WHERE Skill IN ('Oil Change', 'Car Repair', 'Bike Repair')
GROUP BY MechName
HAVING COUNT(DISTINCT Skill) = 3;
答案 1 :(得分:0)
select MechName from Skills a join Mechanic b
on a.Skills = b.MechSkill
group by Mechname
having count(MechSkill) = (select count(*) from Skills)