php - 如何在Codeigniter连接中使用Mysql查询?

标签 php mysql codeigniter-3

我正在使用 Codeigniter,我遇到 MySQL 查询问题。我从我这边尝试过,但没有得到我预期的输出。

从 @tcadidot0 得到答案后,我的问题得到了解决,但我必须在我的联接中使用以下查询。

SELECT A.* FROM tbl_payment_invoice A 
INNER JOIN
(SELECT `bank_id`,MAX(`payment_invoice_date`) AS maxdt 
   FROM tbl_payment_invoice GROUP BY `bank_id`) B
ON A.`bank_id`=B.`bank_id` AND A.`payment_invoice_date`=B.`maxdt`;

你能帮我看看如何在这个连接 ->join('tbl_payment_invoice','tbl_bankname.b_id=tbl_payment_invoice.bank_id','LEFT') 中使用上面的查询吗? ?

最终查询

$result = $this->db->select('*')
                    ->from('tbl_lead')
                    ->join('tbl_bankdata','tbl_lead.c_id=tbl_bankdata.lead_id','LEFT')
                    ->join('tbl_bankname','tbl_bankname.b_id=tbl_bankdata.b_bankname')
                    ->join('tbl_payment_invoice','tbl_bankname.b_id=tbl_payment_invoice.bank_id','LEFT')
                    ->order_by('tbl_lead.date_of_created','DESC')
                    ->get()
                    ->result();

我应该使用子查询吗?

最佳答案

你可以尝试这样:

SELECT A.* FROM tbl_payment_invoice A 
INNER JOIN
(SELECT `bank_id`,MAX(`payment_invoice_date`) AS maxdt 
   FROM tbl_payment_invoice GROUP BY `bank_id`) B
ON A.`bank_id`=B.`bank_id` AND A.`payment_invoice_date`=B.`maxdt`;

首先,您使用 MAX() 按银行 ID 分组获取最新日期。然后将其作为子查询。创建一个外部查询来内部连接您在bank_id和最大日期上获得的结果。

关于php - 如何在Codeigniter连接中使用Mysql查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58281653/

相关文章:

php - 父子关系树所需的递归函数?

mysql - 从组中添加值

php - 如何为 PDO 制作单例包装器?

php - 如何使用 phonegap 发送推送通知并解析

mysql - 如何按列分组,并选择任意非空其他列来显示

mysql 使用子查询改进 View

php - 如何访问服务器内的mysql服务器?

php - Codeigniter 密码验证问题

php - 理解 PHP/mysql 中的递归

php - Nova 相关过滤 - 如何过滤 company_id 与位置 company_id 匹配的用户