MySQL case when then 子句

MySQL Case when then clause

$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');

报错:

near from "diskusi a, mahasiswa f, dosen g"

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

FALSE 添加到您的 select 语句中,像这样 select('a.diskusi_id, a.topik_id, a.diskusi_komentar, a.diskusi_file, a.pengguna_id', FALSE);& 检查会发生什么。当你想使用复合 select 语句时,你需要使用 FALSE 作为第二个参数。

尝试使用

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

检查 sql 语法与查询结果。