代码之家  ›  专栏  ›  技术社区  ›  user6792790

SQL中的多关系查询

sql
  •  1
  • user6792790  · 技术社区  · 8 年前

    考虑到这四个关系:

    Mentorship (mentee_id, mentor_id)
    Study (sid, credits)
    Enrollment (did, sid)
    Student (sid, street , city )
    

    我想写一个查询,找到与导师生活在同一城市和街道上的所有学生,假设所有导师和学员都是学生。

    我尝试将此查询编写为:

    SELECT sid
    FROM Student, Mentorship
    WHERE street IN (SELECT sid
                     FROM Student, Mentorship
                     WHERE mentor_sid = sid 
                       AND ...   )
    

    这是不完整的,但我试图从学生和导师关系中选择一个sid,其中street陷入了 mentor_sid mentee_sid 有相同的街道和城市。

    我是SQL新手,仍然不知道如何做这些事情。

    1 回复  |  直到 8 年前
        1
  •  1
  •   FJT    8 年前

    您需要通过链接表将学生(学员)加入到学生(导师)中

    SELECT s1.* FROM Student s1
    INNER JOIN Mentorship m ON s1.sid = m.mentee_id
    INNER JOIN student s2 ON s2.sid = m.mentor_id 
       AND s2.street = s1.street AND s2.city = s1.city