mysql内部连接构造与distict列

时间:2017-04-26 13:33:52

标签: mysql inner-join distinct

我有一个问题,就是从4个不同的桌子,学生,课程和结果中获取记录 查询是

  1. 使用(班级,部门和会话)取得所有学生(仅限matric_no)在classroom_students中
  2. 每个选中的matric_no都会从学生表中获取学生的详细信息
  3. 从结果表中获取所选matric_no的分数
  4. 在上面的步骤3中获取所选分数的相应course_code
  5. 对步骤1中的每个选定的matric_no重复步骤2到4
  6. Classroom_students

        id        ||  int
        class_id  ||  int   
        dept_id   ||  int
        matric_no ||  varchar(30)
        session   ||  int
    

        id            ||  int
        sname         ||  varchar(30)
        fname         ||  varchar(30)
        mname         ||  varchar(30)
        matric_no     ||  varchar(30)
        year_of_entry ||  int
        status        ||  varchar(30)
        dept          ||  int
        level         ||  int
    

    结果

        result_id     ||  int
        matric_no     ||  int
        course_id     ||  int
        score         ||  int
        semester      ||  int
        level         ||  int
        session       ||  int
    

    课程

        course_id         || int
        course_code       ||  varchar(30)
        course_title      ||  varchar(30)
        course_unit       ||  varchar(30)
        semester          ||  int
        level             ||  int
        dept              ||  int
    

    我尝试了以下代码,但只返回了学生详细信息和课堂上的详细信息,并留下了课程和结果表记录

        $get_student = mysqli_query($mysqli, "SELECT CONCAT(st.sname,' 
        ',st.fname,' ',st.mname) as sName, cls.matric_no, rs.score, 
        rs.course_id, 
        cs.course_code, cs.course_title, cs.course_unit FROM student AS st
        INNER JOIN classroom_students AS cls
        ON cls.matric_no = st.matric_no
        INNER JOIN result AS rs
        ON rs.matric_no = cls.matric_no
        INNER JOIN courses AS cs
        ON cs.course_id = rs.course_id
        WHERE rs.course_id = cs.course_id
        AND rs.semester = '$semester'
        AND rs.level = '$level'
        AND rs.session = '$session'
        ") or die(mysqli_error($mysqli));  
    

    我想使用内连接实现上述任务。任何帮助将非常感激。感谢

0 个答案:

没有答案