我无法进行查询

时间:2015-04-14 06:59:31

标签: php database codeigniter

我试图进行查询,但它并没有向我显示任何结果。我的表是:

TABLE teacher_student_conn:
    id, teacher_id, student_id, created_at
TABLE users:
    user_id, username, password, school_id, class, division, role_id, deactivated_at
TABLE schools:
    school_id, school_name

我想告诉我只有这些在老师学校的学生而且他没有教他们 - 我从$this->uri->segment(3)和学校 - 从$this->uri->segment(4)接过老师。它必须显示这些学生,因为管理员可以将它们添加到教师。 我不知道如何让我的查询向我展示这些在老师学校的学生,而他并没有教他们。 我对查询的尝试是:



 public function select_students() {
  
        $this->db->select('users.user_id, users.username, users.school_id, users.class, users.division, users.role_id, schools.school_name, schools.region,class_divisions.division');
        $this->db->from('users');       

        $this->db->join('teacher_student_conn','teacher_student_conn.student_id=users.user_id','left');
        $this->db->join('teacher_student_conn AS T','T.teacher_id=users.user_id','left');

        $this->db->join('class_divisions','class_divisions.id=users.division','left');
        $this->db->join('schools','schools.school_id=users.school_id','left');
        $this->db->where('(users.deactivated_at = "0000-00-00 00:00:00" OR users.deactivated_at IS NULL) AND users.role_id = 1 ');

        $this->db->where('users.school_id', $this->uri->segment(4) );
        $this->db->where('teacher_student_conn.teacher_id', $this->uri->segment(3) );
        $this->db->where("teacher_student_conn.student_id IS NULL");

         
        $result=$this->db->get();
            return $result->result();
 }




echo $ this-> db-> last_query();它告诉我:



SELECT users.user_id, users.username, users.school_id, users.class, users.division, users.role_id, schools.school_name, schools.region,class_divisions.division FROM users LEFT JOIN teacher_student_conn ON teacher_student_conn.student_id=users.user_id LEFT JOIN teacher_student_conn as T ON T.teacher_id=users.user_id LEFT JOIN class_divisions ON class_divisions.id=users.division LEFT JOIN schools ON schools.school_id=users.school_id WHERE (users.deactivated_at = '0000-00-00 00:00:00' OR users.deactivated_at IS NULL) AND users.role_id = 1 AND users.school_id = 2 AND teacher_student_conn.teacher_id = 10 AND 



 现在我使用了这个查询:



 public function select_students() {
   $query=("SELECT users.user_id, users.username, users.school_id, users.class, users.division, users.role_id, schools.school_name, schools.region,class_divisions.division FROM users
    LEFT JOIN teacher_student_conn ON teacher_student_conn.student_id=users.user_id
    LEFT JOIN teacher_student_conn as T ON T.teacher_id=users.user_id
    LEFT JOIN class_divisions ON class_divisions.id=users.division
    LEFT JOIN schools ON schools.school_id=users.school_id
    WHERE (users.deactivated_at = '0000-00-00 00:00:00' OR users.deactivated_at IS NULL) AND users.role_id = 1 AND
    users.school_id = 2 ");
   $this->db->where('teacher_student_conn.student_id', NULL);
    $result = $this->db->query($query);
    echo $this->db->last_query();
            return $result->result();   

}




我找到了解决方案:



$teacher=$this->uri->segment(3);
   $query=("SELECT users.user_id, users.username, users.school_id, users.class, users.division, users.role_id, schools.school_name, schools.region,class_divisions.division FROM users
    LEFT JOIN teacher_student_conn ON teacher_student_conn.student_id=users.user_id
    AND teacher_student_conn.teacher_id = $teacher
    LEFT JOIN teacher_student_conn as T ON T.teacher_id=users.user_id
    LEFT JOIN class_divisions ON class_divisions.id=users.division
    LEFT JOIN schools ON schools.school_id=users.school_id
    WHERE (users.deactivated_at = '0000-00-00 00:00:00' OR users.deactivated_at IS NULL) AND users.role_id = 1 AND
    users.school_id = 2 AND teacher_student_conn.student_id IS NULL");

  
    $result = $this->db->query($query);
    echo $this->db->last_query();
            return $result->result();   

}




1 个答案:

答案 0 :(得分:2)

这只是sql查询格式打印您的查询并粘贴在PHPmyadmin SQL或echo $ this-> db-> last_query();.

public function select_students() {

         $query = "SELECT users.user_id, users.username, users.school_id, users.class, users.division, users.role_id, schools.school_name, schools.region,class_divisions.division FROM users"
                 . "LEFT JOIN teacher_student_conn ON teacher_student_conn.student_id=users.user_id"
                 . "LEFT JOIN teacher_student_conn as T ON T.teacher_id=users.user_id"
                 . "LEFT JOIN class_divisions ON class_divisions.id=users.division"
                 . "LEFT JOIN schools ON schools.school_id=users.school_id"
                 . "WHERE (users.deactivated_at = '0000-00-00 00:00:00' OR users.deactivated_at IS NULL) AND users.role_id = 1 AND "
                 . "users.school_id = ".$this->uri->segment(4)." AND teacher_student_conn.teacher_id = ".$this->uri->segment(4)." AND teacher_student_conn.student_id IS NULL";
        $result = $this->db->query($query);

        return $result->result();             
}