【问题标题】:MySQL Case when then clauseMySQL Case when then 子句
【发布时间】:2016-10-18 07:40:13
【问题描述】:
$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 语法有一些更正,我会尝试理解。

【问题讨论】:

    标签: php mysql sql codeigniter case-when


    【解决方案1】:

    尝试使用

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

    带有查询结果的检查sql语法。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回复我已经这样做了,同样的错误,语法在 'FROM diskusi a, dosen g, g, mahasiswa f WHERE CASE WHEN 附近使用a.`pengguna' 在第 2 行
      • SELECT a.diskusi_id, a.topik_id, a.diskusi_komentar, a.diskusi_file, a.pengguna_id, 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) FROM diskusi` a, dosen g, mahasiswa f WHERE CASE WHEN a.pengguna_idLIKE" pengguna_id = f.mahasiswa_id) WHEN a.pengguna_id LIKE "dos%" THEN (a.pengguna_id = g.dosen_id)`这是sql命令的错误
      • 你是否在两个 select 语句中都添加了 false?
      • 是的,我有,我认为错误来自when case子句,有什么奇怪的吗?
      猜你喜欢
      • 1970-01-01
      • 2019-08-02
      • 2013-03-25
      • 2011-06-07
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-30
      相关资源
      最近更新 更多