Mysql 为多个关系值选择

Mysql 为多个关系值选择,mysql,doctrine,Mysql,Doctrine,我已经试了几个小时来解决这个问题 我有三个亲戚 用户、知识、技能和专业知识 我需要通过Skill的ID找到知道它的用户。同时我想运用多种技能 我希望能够根据特定技能的专业知识对其进行分类,这可能吗?SQL是否复杂并不重要。我只需要一个命令 用户关系: 知识关系: 技能关系: 专业关系: 所以目标是: 能够通过多个技能ID找到用户 能够根据特定技能的专业知识对用户进行分类 在学说中: 通过多个技能ID查找用户 select u.* from User u inner join Know

我已经试了几个小时来解决这个问题

我有三个亲戚

用户、知识、技能和专业知识

我需要通过Skill的ID找到知道它的用户。同时我想运用多种技能

我希望能够根据特定技能的专业知识对其进行分类,这可能吗?SQL是否复杂并不重要。我只需要一个命令

用户关系:

知识关系:

技能关系:

专业关系:

所以目标是:

  • 能够通过多个技能ID找到用户
  • 能够根据特定技能的专业知识对用户进行分类
在学说中:

通过多个技能ID查找用户

select u.*
from User u
inner join Knowledge k on k.user_id = u.id
inner join Skill s on k.skill_id = s.id
where s.id in (:ids)
group by u.id, u.name
having count(s.id) = (select count(*) FROM skill where id in (:ids))
按特定技能的专业知识对用户进行排序

select u.id, u.name, e.name
from User u
inner join Knowledge k on k.user_id = u.id
inner join Skill s on k.skill_id = s.id
inner join Expertise e k.expertise_id = e.id
where s.name = 'My Skill'
order by e.name

“in”有一个问题,因为当用户拥有1项技能而不是第2项技能时,它仍然会返回该用户。此查询将只返回具有技能ID(:ID)技能的用户,但我只需要获得具有所有上述技能的用户。好的,我不明白这一点。我更新了我的答案,它符合你的需要吗?太棒了。非常感谢:)