SQL Query,用于获取具有skillRequired表中所有技能的Mechanic的所有名称

时间:2016-02-19 21:09:14

标签: mysql sql sql-server sql-server-2008

我有一个表机械师,其行如

MechName机械技能

    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)

2 个答案:

答案 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)
相关问题