Mysql 为多个关系值选择
我已经试了几个小时来解决这个问题 我有三个亲戚 用户、知识、技能和专业知识 我需要通过Skill的ID找到知道它的用户。同时我想运用多种技能 我希望能够根据特定技能的专业知识对其进行分类,这可能吗?SQL是否复杂并不重要。我只需要一个命令 用户关系:Mysql 为多个关系值选择,mysql,doctrine,Mysql,Doctrine,我已经试了几个小时来解决这个问题 我有三个亲戚 用户、知识、技能和专业知识 我需要通过Skill的ID找到知道它的用户。同时我想运用多种技能 我希望能够根据特定技能的专业知识对其进行分类,这可能吗?SQL是否复杂并不重要。我只需要一个命令 用户关系: 知识关系: 技能关系: 专业关系: 所以目标是: 能够通过多个技能ID找到用户 能够根据特定技能的专业知识对用户进行分类 在学说中: 通过多个技能ID查找用户 select u.* from User u inner join Know
知识关系:
技能关系:
专业关系:
所以目标是:
- 能够通过多个技能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)技能的用户,但我只需要获得具有所有上述技能的用户。好的,我不明白这一点。我更新了我的答案,它符合你的需要吗?太棒了。非常感谢:)