MySQL case当then子句

时间:2016-10-18 07:40:14

标签: php mysql sql codeigniter case-when

$this->db->select('a.diskusi_id, a.topik_id, a.diskusi_komentar, a.diskusi_file, a.pengguna_id');

$this->db->select('CASE WHEN a.pengguna_id LIKE "mhs%" THEN (select f.mahasiswa_id, f.mahasiswa_nama, f.mahasiswa_nim) WHEN a.pengguna_id LIKE "dos%" THEN (select g.dosen_id, g.dosen_nama, g.dosen_nidn)');

$this->db->where('CASE WHEN a.pengguna_id LIKE "mhs%" THEN a.pengguna_id = f.mahasiswa_id WHEN a.pengguna_id LIKE "dos%" THEN a.pengguna_id = g.dosen_id');

$query = $this->db->get('diskusi a, mahasiswa f, dosen g');

它出错了:

  

靠近“diskusi a,mahasiswa f,dosen g”

我想说明如果a.pengguna_id like "mhs%"然后从mahasiswa f获取数据,如果a.pengguna_id like "dos%",则从dosen g获取数据。 我正在使用Codeigniter,但如果您对SQL语法有一些更正,我会尝试理解。

2 个答案:

答案 0 :(得分:0)

使用您的select语句添加FALSE,例如select('a.diskusi_id, a.topik_id, a.diskusi_komentar, a.diskusi_file, a.pengguna_id', FALSE);&检查发生了什么。如果要使用复合选择语句,则需要使用FALSE作为第二个参数。

答案 1 :(得分:0)

尝试使用

分析您的模型
$this->output->enable_profiler(TRUE);

使用查询结果检查sql语法。

相关问题