0

以下のような2つのテーブルがあります。

表 1 にはUserIDNameが含まれ、表 2 にはUserIDSkill_ID、およびが含まれます。SkillName

私がやりたいことは、SkillName を介して検索された、2 つのスキルを持っている人を検索したいということです。

例: AndyPHPNameと C# の2 つのスキルを持っているので、 PHPC#検索すると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で、この場合、これは 3 つのテーブル、UsersSkillsおよびリンク テーブルUser_Skillsです。

推奨される設計は次のとおりです。

テーブルUser

  • ユーザー ID (PK)
  • 名前

テーブルSkills

  • スキル ID (PK)
  • スキル名

テーブルUser_Skills

  • ユーザー ID (外部キー)
  • スキル ID (外部キー)
于 2013-02-01T17:02:46.367 に答える