我有一个学生的数据,学校包括几个班,如A班,B班和C班,也有成绩。但是我想根据varibale的等级检索学生和班级数据。我试图这样做,但仍然没有出现数据。
示例:
tb_class
ID | id_class | grade |
---- | --------- |-------|
1 | A | 1 |
2 | B | 2 |
3 | C | 1 |
4 | D | 3 |
___________________________
tb_user
ID | id_class | id_user |
---- | --------- | -------- |
1 | A | 002 |
2 | B | 008 |
3 | B | 005 |
4 | A | 006 |
5 | C | 007 |
6 | C | 003 |
7 | D | 001 |
______________________________
$grade= 1;
$query_grade = $this->db->select('id_class')
->from('tb_class')
->where('grade', $grade)
->get()->result();
$data = array($query_grade);
$query_user = $this->db->select('id_user')
->from('tb_user')
->where_in('id_class', $data)
->get()->result();
return $query_user;
我希望出现数据002,006,007,003
答案 0 :(得分:1)
首先:您在错误的情况下向where_in提供数据,您应该将结果准备为正确的格式,如简单数组。
$query_grade = $this->db->select('id_class')
->from('tb_class')
->where('grade', $grade)
->get()->result_array();
foreach ($query_grade as $value)
{
$ids[] = $value['id_class'];
}
$query_user = $this->db->select('id_user')
->from('tb_user')
->where_in('id_class', $ids)
->get()->result();
return $query_user;
$ query_user将保存您的数据。
第二:如果上面的代码看起来很复杂,您可以使用下面的代码。
$query = $this->db->query("SELECT id_user FROM tb_user WHERE id_class IN(SELECT id_class FROM tb_class WHERE grade = '{$grade}')");
$data = $query->result();
您将获得适当的结果。
有时您无法使用查询构建器创建复杂查询。
答案 1 :(得分:0)
您可以尝试此查询
$grade = 1;
$this->db->select('id_class');
$this->db->from('tb_class');
$this->db->join('tb_user', 'tb_class.id_class = tb_user.id_class',array('id_user'));
$this->db->where('grade', $grade);
$query = $this->db->get();