0

我有 2 个表,如下所示:

表 1 包含UserIDName而表 2 包含UserID, Skill_ID, 和SkillName

我想要做的是,我想搜索具有 2 技能的人,通过 SkillName 搜索。

例如:我有AndyName因为他有 2 项技能PHPC#,所以当我搜索PHP & C#时,Andy 将显示为结果。

有谁能够帮助我?谢谢你。

4

1 回答 1

0
SELECT a.Name
FROM    table1 a
        INNER JOIN table2 b
            ON a.userID = b.user_ID
WHERE   b.skill_name IN ('PHP','C#')
GROUP   BY a.Name
HAVING  COUNT(*) = 2

你的桌子的设计没有很好地规范化。关系的类型是Many-to-Many,在这种情况下,这应该是三个表,UsersSkills链接表User_Skills

建议的设计是:

桌子User

  • 用户 ID (PK)
  • 姓名

桌子Skills

  • 技能 ID (PK)
  • 技能名称

桌子User_Skills

  • 用户 ID (FK)
  • 技能 ID (FK)
于 2013-02-01T17:02:46.367 回答