繁体   English   中英

Codeigniter查询:当我使用sum Select函数从另一个表中获取数据时,如何从表中的列中获取所有记录

[英]codeigniter query: how to take all the record from a column in a table when i use sum Select function to get data from another table

情况是我有一个名为journal_type的表
id_type | account_no | 描述|
---------------------------------------------
1 | 1.1 | 银行
2 | 1.2 | 银行和现金
3 | 1.3 | 销售
4 | 1.4 | 股票
5 | 1.5 | 办公工具
6 | 1.6 | 工资单


第二个表叫做journal是这样的
id_transaction | id_type | 借方 date_of_transaction
---------------------------------------------
1 | 1 | 50.00 | 2018年8月22日
2 | 3 | 90.00 | 2018/08/21
3 | 1 | 80.00 | 2018/08/17

到目前为止,我所做的是基于月份对第二张表的借方列中的数据求和(在本例中为8月),我想按id_type将其分组。 所以就像id_type1 = 130.00和id_type3 = 90.00
但我希望输出从第一个表的id_type列中打印所有记录,并在不使用时让另一列为null。 也许我想要的结果是这样的

id_type | account_no | 描述| 借方
---------------------------------------------
1 | 1.1 | 银行 130
2 | 1.2 | 银行和现金| 0
3 | 1.3 | 销售 90
4 | 1.4 | 库存 0
5 | 1.5 | 办公工具| 0
6 | 1.6 | 工资单| 0

public function get_finance_debitkredit($periode1, $periode2){
  $query = $this->db->select('sum(debit) as debit, journal_type.account_no, journal_type.description, journal.id_type')
          ->from('journal_type')
          ->join('journal', 'journal.id_type = journal_type.id_type', 'left outer')
          ->group_by('journal.id_type')
          ->where('date_of_transaction >=', $periode1)
          ->where('date_of_transaction <=', $periode2)
          ->order_by('journal_type.account_no')
          ->get();
    return $query;  
}

但是到目前为止,我得到的是它仅打印了具有事务的记录数据(在本例中为id_type 1和id_type_3),因此仅出现2行。 我可以通过查询的某些更改使journal_type的所有6行显示为我想要的样子吗? 该代码来自我在codeigniter中的模型

您首先需要为该记录创建一个单独的表,然后需要与该表保持连接。 使用以下查询,它将给出您想要的结果

public function get_finance_debitkredit($periode1, $periode2){
$query = $this->db->select('finl_tbl.debit, journal_type.account_no, journal_type.description, journal_type.id_type')
      ->from('journal_type')
      ->join('(SELECT sum(debit) as debit,id_type FROM journal WHERE date_of_transaction >='.$periode1.' AND date_of_transaction <='.$periode2.' group by id_type) as finl_tbl', 'finl_tbl.id_type = journal_type.id_type', 'left')
      ->order_by('journal_type.account_no')
      ->get();
return $query;  
}

暂无
暂无

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

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