繁体   English   中英

MySQL Case when子句

[英]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');

它给出了一个错误:

邻近“ diskusi a,mahasiswa f,剂量g”

我想关联一下,如果a.pengguna_id like "mhs%"那么从mahasiswa f获取数据;如果a.pengguna_id like "dos%"那么从dosen g获取数据。 我正在使用Codeigniter,但是如果您对SQL语法有一些更正,我将尝试理解。

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

尝试使用

$this->output->enable_profiler(TRUE);

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM