【问题标题】:Convert SQL Query to Codeigniter [closed]将 SQL 查询转换为 Codeigniter [关闭]
【发布时间】:2018-09-03 09:31:42
【问题描述】:

任何人都可以帮我将此 SQL 查询转换为 codeigniter

"SELECT *,
       (select nama_opd from c1db_pegawai.m_opd aopd where p.jabatan_lama_opd = aopd.id) lm_jabatan_lama_opd,
       (select nama_opd from c1db_pegawai.m_opd bopd where p.jabatan_baru_opd = bopd.id) br_jabatan_baru_opd,
       (select unit_kerja from c1db_pegawai.m_unit_kerja aunit where p.jabatan_lama_unit = aunit.id) lm_jabatan_lama_unit,
       (select unit_kerja from c1db_pegawai.m_unit_kerja bunit where p.jabatan_baru_unit = bunit.id) br_jabatan_baru_unit
       from sk_mutasi p;

【问题讨论】:

  • 您的意思是只使用查询生成器创建此查询?
  • 是的,我需要知道如何放入查询生成器

标签: mysql sql codeigniter


【解决方案1】:

正如 marcogmonteiro 已经指出的那样 - 你真的必须在这里使用连接。

试试下面的

$query = $this->db
    ->select('p.*, aopd.nama_opd AS lm_jabatan_lama_opd, bopd.nama_opd AS br_jabatan_baru_opd, aunit.unit_kerja AS lm_jabatan_lama_unit, bunit.unit_kerja AS br_jabatan_baru_unit')
    ->from('sk_mutasi p')
    ->join('c1db_pegawai.m_opd aopd', 'p.jabatan_lama_opd = aopd.id', 'left')
    ->join('c1db_pegawai.m_opd bopd', 'p.jabatan_baru_opd = bopd.id', 'left')
    ->join('c1db_pegawai.m_unit_kerja aunit', 'p.jabatan_lama_unit = aunit.id', 'left')
    ->join('c1db_pegawai.m_unit_kerja bunit', 'p.jabatan_baru_unit = bunit.id', 'left')
    ->get();

【讨论】:

  • 很好,这工作如此完美
【解决方案2】:

使用查询生成器,您可以对这些选择进行分组。

$this->db->select('*')
    ->group_start()
        ->select('(SELECT nama_opd FROM c1db_pegawai.m_opd aopd WHERE p.jabatan_lama_opd = aopd.id) AS lm_jabatan_lama_opd')
    ->group_end()
    ->group_start()
        ->select('(SELECT nama_opd from c1db_pegawai.m_opd bopd WHERE p.jabatan_baru_opd = bopd.id) AS br_jabatan_baru_opd')
    ->group_end()
    ->group_start()
        ->select('(SELECT unit_kerja from c1db_pegawai.m_unit_kerja aunit where p.jabatan_lama_unit = aunit.id) AS lm_jabatan_lama_unit')
    ->group_end()
    ->group_start()
        ->select('(SELECT unit_kerja from c1db_pegawai.m_unit_kerja bunit where p.jabatan_baru_unit = bunit.id) AS br_jabatan_baru_unit')
    ->group_end()
    ->from('sk_mutasi p')
    ->get()
    ->result();

您甚至可以更深入地了解,只需使用查询构建器来创建这些子选择。

或者,您可以像这样在查询语句中使用整个查询:

$this->db->query('SELECT *,
       (select nama_opd from c1db_pegawai.m_opd aopd where p.jabatan_lama_opd = aopd.id) lm_jabatan_lama_opd,
       (select nama_opd from c1db_pegawai.m_opd bopd where p.jabatan_baru_opd = bopd.id) br_jabatan_baru_opd,
       (select unit_kerja from c1db_pegawai.m_unit_kerja aunit where p.jabatan_lama_unit = aunit.id) lm_jabatan_lama_unit,
       (select unit_kerja from c1db_pegawai.m_unit_kerja bunit where p.jabatan_baru_unit = bunit.id) br_jabatan_baru_unit
       from sk_mutasi p')
->result();

我想指出,这可能不是一个好的查询,您可能会得到更好的结果,只需执行连接以从这些额外的表中获取信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2018-10-17
    • 2014-09-04
    • 2019-04-24
    • 2016-10-16
    相关资源
    最近更新 更多