codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?
Posted
技术标签:
【中文标题】codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?【英文标题】:is there subqueries library in codeignoter ? or how i can make subqueries in codeigniter 3?codeigniter 中是否有子查询库?或者我如何在codeigniter 3中进行子查询? 【发布时间】:2021-05-12 04:30:03 【问题描述】:我只是想在 codeigniter3 中创建一些子查询,但我不知道如何.. 我尝试使用本机,但它不起作用,不知道为什么。但我想是因为我将 $kode_brg 和 $tgl_brlaku 放在查询 sql 中,所以可能 bcz 它不起作用。无论如何。我真的希望有人可以帮助我并教我如何使用 CI3 进行子查询..
这是我想在 CI 中使用的查询,但它不适用于本机
public function getharga($tgl_berlaku)
$kode_brg =$this->input->post('kode_brg');
$tgl = $this->input->post('tgl_berlaku');
$tgl_brlaku = date('Ymd', strtotime($tgl));
//print_r($tgl_brlaku);
$x = $this->db->query('select a.kode_brg,c.nama_brg,a.harga_beli from mcmharga_beli a
inner join(select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli
where tgl_berlaku<="$tgl_brlaku" group by kode_brg)
b on b.kode_brg=a.kode_brg and b.tgl_berlaku=a.tgl_berlaku
inner join mcmbarang c on c.kode_brg=a.kode_brg
where a.kode_brg="$kode_brg"');
//print_r($x->result());die;
【问题讨论】:
这部分行代码错误inner join(select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli where tgl_berlaku<="$tgl_brlaku" group by kode_brg)
。您只能输入表名而不是数据。所以交叉检查你的这部分工作
这有帮助吗? ***.com/a/65052843/2275490
首先感谢兄弟的回复..这不是数据,而是数据库中列的名称。 @ChibuezeAgwu
tnx 分享我亲爱的.. 我会尝试使用它,我希望它能工作.. 祝我一切顺利:) @Vickel
所有最好的兄弟。但是您不能调用列。如果对您有帮助,请查看下面的答案
【参考方案1】:
现在它的工作..我使用正常的方式,因为子查询是 lil 但对我来说很难,因为我以前从未学习或尝试过。所以我对此完全视而不见。 这就是我为使它工作所做的。
public function getharga($tgl_berlaku)
$kode_brg =$this->input->post('kode_brg');
$tgl = $this->input->post('tgl_berlaku');
$tgl_brlaku = date('Y-m-d', strtotime($tgl));
$this->db->select('a.kode_brg,harga_beli,b.nama_brg');
$this->db->select_max('a.tgl_berlaku');
$this->db->from('mcmharga_beli a');
$this->db->where('a.tgl_berlaku <=', $tgl_brlaku);
$this->db->group_by('a.kode_brg');
$this->db->join('mcmbarang b', 'b.kode_brg = a.kode_brg', 'left');
$this->db->where('a.kode_brg', $kode_brg);
return $this->db->get()->result_array();
【讨论】:
【参考方案2】:你好兄弟,我只是想帮你重写你的代码。检查它是否适合你
public function getharga($tgl_berlaku)
$kode_brg =$this->input->post('kode_brg');
$tgl = $this->input->post('tgl_berlaku');
$tgl_brlaku = date('Ymd', strtotime($tgl));
//print_r($tgl_brlaku);
$x = $this->db->query('
SELECT a.kode_brg, c.nama_brg, a.harga_bel
FROM mcmharga_beli a
inner join the_table_name_you_want_to_join b
/**
* (select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli
* where tgl_berlaku<="$tgl_brlaku" group by kode_brg)
*/
ON b.kode_brg = a.kode_brg and b.tgl_berlaku = a.tgl_berlaku
INNER JOIN mcmbarang c on c.kode_brg = a.kode_brg
WHERE a.kode_brg = "$kode_brg"
');
//print_r($x->result());
die;
所以请检查这是否适合您。如果不回电。我是来帮忙的
【讨论】:
嗨,兄弟,我非常感谢您为我所做的一切。我已经尝试了您的代码,它显示错误`您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 5 行 mcmharga_beli 的 'ON b.kode_brg = a.kode_brg 和 b.tgl_berlaku = a.tgl_berlaku INNER J...' 附近使用正确的语法,其中 tgl_berlaku 我修改了你给我的代码,$kode_brg n $tgl_brlaku 显示为字符串,但仍然有错误你的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 5 行内部连接处的“ON b.kode_brg=a.kode_brg 和 b.tgl_berlaku=a.tgl_berlaku INNER J”附近使用正确的语法(选择 kode_brg,max(tgl_berlaku) tgl_berlaku 来自 mcmharga_beli,其中 tgl_berlaku remove/** * (select kode_brg,max(tgl_berlaku) tgl_berlaku from mcmharga_beli * where tgl_berlaku<="$tgl_brlaku" group by kode_brg) */
from the query string 那是错误以上是关于codeigniter 中是不是有子查询库?或者我如何在codeigniter 3中进行子查询?的主要内容,如果未能解决你的问题,请参考以下文章
如何测试我的 MySQL 更新查询在 CodeIgniter 中是不是成功? [复制]