我试图进行查询,但它并没有向我显示任何结果。我的表是:
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();
}

答案 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();
}