如何使用 PHP Mysql 创建总账/T 型账户

2023-12-12

我正在尝试创建一个复式记账财务会计系统。我已经完成了数据库的设计,请检查此链接以查看我的数据库的图表。http://i39.tinypic.com/juhbv6.png

我已经尝试了很多开发 mysql 查询来生成总账,但我没有任何进展。我所能做的就是仅为一个帐户创建分类帐,而我必须为无限帐户创建分类帐。

我尝试过的查询如下:

 $this->db->select('*');
    $this->db->from('credit_side');
    $this->db->join('debit_side', ' debit_side.transaction_id_dr = credit_side.transaction_id_cr ');
    $this->db->join('transaction_info', 'transaction_info.transaction_id = credit_side.transaction_id_cr ');
    $this->db->join('accounts', 'accounts.code = credit_side.account_code ');
    $this->db->where('debit_side.account_code', '1001'); 
    $this->db->order_by('voucher_date','ASC');

在编写可以为所有帐户生成分类帐的 mysql 查询失败后,我写下了创建总帐/T 帐户的逻辑。

现在,你能帮我解决mysql查询吗?

在执行以下操作之前,请先检查数据库。 提前致谢 :)

  1. Get the accounts.name作为账户主管,accounts.code从账户中。

  2. 到餐桌去debit_side and get debit_side.account_code, if debit_side.account_code=accounts.code然后得到credit_side.account_codeAS AccountName1 (但是当我在 php 中 echo 时,我想获取名称而不是代码本身)并且credit_side.amountAS 金额1,SUM(credit_side.amount)AS 总金额 1 来自credit_side where debit_side.transaction_id_dr=credit_side.transaction_id_cr and transaction_info.voucher_date位于 date1 和 date2 之间 在哪里transaction_info.transaction_id=debit_side.transaction_id_dr

  3. 完成第二步后进入表格credit_side and get credit_side.account_code,
    if credit_side.account_code=accounts.code然后得到debit_side.account_codeAS AccountName2 (但是当我在 php 中 echo 时,我想获取名称而不是代码本身)并且debit_side.amountAS 金额2,SUM(debit_side.amount)AS 总金额2 来自debit_side where credit_side.transaction_id_cr=debit_side.transaction_id_dr and transaction_info.voucher_date位于 date1 和 date2 之间 在哪里transaction_info.transaction_id=credit_side.transaction_id_cr

现在在视图文件中我的目标是具有以下内容:

   <table width="200" border="0">
     <tr><td colspan="5">Account Head <?echo $AccountHead ; ?> </td> </tr>


    <tr>
           <td>Dr.</td>
           <td>amount.</td>
            <td>&nbsp;</td>
           <td>Cr</td>
          <td>Amount</td>

    </tr>
     <tr>
       <td><?echo $AccountName1 ; ?></td>
       <td><?echo $Ammount1 ; ?></td>
      <td></td>
 <td><?echo $AccountName2 ; ?></td>
     <td><?echo $Ammount2 ; ?></td>

     </tr>

     <tr>
     <td>Total</td>
     <td><?echo $TotalAmount1 ; ?></td>
     <td>&nbsp;</td>
 <td>Total  </td>
 <td><?echo $TotalAmount2 ; ?></td>

     </tr>
     </table>

总账样本

enter image description here

public function getDebits(){    
    $data   =   array(
                'debit_side.account_code DebitCode',
                'group_concat(distinct accounts.name) as DebitAccount',
                'group_concat(debit_side.amount) as DebitAmount',
                'group_concat(transaction_info.voucher_date) as DebitVoucherDate'
                );
    $this->db->select($data);
    $this->db->from('accounts');
    $this->db->join('credit_side','accounts.code = credit_side.account_code','left');
    $this->db->join('debit_side','debit_side.transaction_id_dr = credit_side.transaction_id_cr','left');
    $this->db->join('transaction_info','transaction_info.transaction_id = credit_side.transaction_id_cr','left');
    $this->db->group_by('debit_side.account_code');
    $this->db->order_by('debit_side.account_code','ASC');
    $query  =   $this->db->get();
    return  $query->result_array();
}


public  function getCredits()
{
    $data   =   array(
                'credit_side.account_code CreditCode',
                'group_concat(distinct accounts.name) as CreditAccount',
                'group_concat(credit_side.amount) as CreditAmount',
                'group_concat(transaction_info.voucher_date) as CreditVoucherDate'
                );
    $this->db->select($data);
    $this->db->from('accounts');
    $this->db->join('debit_side','accounts.code = debit_side.account_code','left');
    $this->db->join('credit_side','debit_side.transaction_id_dr = credit_side.transaction_id_cr','left');
    $this->db->join('transaction_info','transaction_info.transaction_id = credit_side.transaction_id_cr','left');
    $this->db->group_by('credit_side.account_code');
    $this->db->order_by('credit_side.account_code','ASC');
    $query  =   $this->db->get();
    return  $query->result_array();
}

抱歉回复晚了,但这是你在做任何事情之前想要测试的完美东西。我想为此创建一个视图文件,但它似乎很复杂并且需要更多时间,目前我湖

EDITED

这个解决方案可能会让您感到困惑,因为我已经测试过它,但是我尝试将这两个查询结合起来并成功了。该查询可能看起来很复杂,但它正在获取完美的结果。 这里是

$data   =   array(
                  'debit_side.account_code    Code',
                  'group_concat(distinct accounts.name) as DebitAccount',
                  'group_concat(debit_side.amount) as DebitAmount',
                  'group_concat(transaction_info.voucher_date) as DebitVoucherDate',
                  '(SELECT group_concat(distinct accounts.name) as CreditAccount FROM (accounts)
                    left JOIN debit_side ON accounts.code = debit_side.account_code
                    left JOIN credit_side ON debit_side.transaction_id_dr = credit_side.transaction_id_cr
                    left JOIN transaction_info ON transaction_info.transaction_id = credit_side.transaction_id_cr
                    group by credit_side.account_code
                    having credit_side.account_code = `Code`) as CreditAccount',
                  '(SELECT  group_concat(credit_side.amount) as CreditAmount FROM (accounts)
                     left JOIN debit_side ON accounts.code = debit_side.account_code
                     left JOIN credit_side ON debit_side.transaction_id_dr = credit_side.transaction_id_cr
                     left JOIN transaction_info ON transaction_info.transaction_id = credit_side.transaction_id_cr
                   group by credit_side.account_code
                   having credit_side.account_code = `Code`) as CreditAmount',  
                  '(SELECT  group_concat(transaction_info.voucher_date) as CreditVoucherDate FROM (accounts)
                    left JOIN debit_side ON accounts.code = debit_side.account_code
                    left JOIN credit_side ON debit_side.transaction_id_dr = credit_side.transaction_id_cr
                    left JOIN transaction_info ON transaction_info.transaction_id = credit_side.transaction_id_cr
                    group by credit_side.account_code
                    having credit_side.account_code = `Code`) as CreditVoucherDate'

                );
    $this->db->select($data);
    $this->db->from('accounts');
    $this->db->join('credit_side','accounts.code = credit_side.account_code','left');
    $this->db->join('debit_side','debit_side.transaction_id_dr = credit_side.transaction_id_cr','left');
    $this->db->join('transaction_info','transaction_info.transaction_id = credit_side.transaction_id_cr','left');
    $this->db->group_by('debit_side.account_code');
    $this->db->order_by('debit_side.account_code','ASC');
    $query  =   $this->db->get();
    return  $query->result_array();

虽然这个查询工作正常,但这里是这个查询的修改和优化版本,我真的从这个查询中学到了一些东西,你也应该看看这个

查询中 Group by 的奇怪行为需要优化

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 PHP Mysql 创建总账/T 型账户 的相关文章

  • Postgresql 的 SQL_NO_CACHE?

    MySQL 关键字是否有等效的 postgresqlSQL NO CACHE 或 SQL Serverdbcc drop clean buffers 即您可以简单地将其包含在 SQL 语句中或作为脚本的一部分吗 UPDATE 这个问题 查看
  • 我应该定义索引(A)和索引(B),还是索引(A,B),或者两者都定义?

    在我的表中 我有两个密切相关的列 A 和 B 我应该考虑哪些因素来决定是否创建 索引 A 和索引 B 索引 A B 以上两者 如果我 仅使用类似的查询where A 5 and B 10 并且从不喜欢where A 5 也可以使用类似的查询
  • cakephp 1.1 与 php 5.3

    我刚刚从 php 5 1 升级到 5 3 之前在我的服务器上使用 cakephp 1 1 自从升级 或者可能更早 我不确定 以来 我收到以下错误 任何人都可以透露一些信息 Deprecated Assigning the return va
  • PHP:在多维数组中查找相同的键并合并结果

    我有一个多维数组 如下所示 array 0 gt array WS gt array id gt 2 name gt hello 1 gt array SS gt array id gt 1 name gt hello2 2 gt arra
  • 拉拉维尔; “SQLSTATE[HY000] [2002] 连接被拒绝”

    我在 OSX 主机上设置了 homestead 2 0 并使用 Sequel Pro 我可以进行迁移并确认数据已在Sequel Pro中迁移 因此看起来数据库连接没有问题 但是 一旦我尝试从 Laravel 4 2 应用程序获取数据 它就无
  • ajax 会增加还是降低安全性?

    我正在创建一个网站 到目前为止它是纯 PHP 的 我在想 既然很少有人没有启用 JavaScript 我想知道为什么 也许我应该将我的网站创建为一个完全 PHP 的网站 而不使用任何 AJAX 难道是我想错了 可以肯定的是 如果我实施一些
  • .htaccess 在动态文件夹名称中加载索引

    我在 htaccess 加载动态文件夹名称中的索引时遇到问题 这是我的目录结构 root products gt this is constant folder name 而不是使用 GET 获取产品 url root products i
  • 计算轮班工作时间并检测

    我有个问题 我的英语很差 我需要用PHP做一个加班计算 已经有一个代码可以实现这一点 但当工作时间超过2天时 计算就会出错 工作开始 2018 09 09 13 43 工作结束 2018 09 11 07 13 结果 07 18 04 00
  • Mandrill 验证错误

    很高兴能在 StackOverflow 上提出我的第一个问题 多年来我一直依靠它自学了很多东西 我的问题是这样的 尝试通过 Mandrill 的 API 发送邮件时出现以下错误 status error code 1 name Valida
  • 如何使用多个数据库设置 symfony 3 学说迁移?

    我在验证和更新模式时努力让 symfony doctrine 排除数据库视图 我第一次尝试没有教条迁移 看到这个问题 https stackoverflow com questions 46775200 symfony 3 doctrine
  • 将自定义参数传递给 Symfony2 中的自定义 ValidationConstraint

    我正在 Symfony2 中创建一个表单 表格只包含一个book字段允许用户在列表中进行选择Books实体 我需要检查是否选择了Book属于Author我的控制器里有 public class MyFormType extends Abst
  • 如何编写可以补偿拼写错误数据的 MySQL 搜索?

    有没有什么方法可以编写一个 MySQL 搜索来弥补用户在拼写等方面的错误 作为随机示例 有人可能会输入 电子邮件受保护 cdn cgi l email protection代替 电子邮件受保护 cdn cgi l email protect
  • 将价格格式设置为逗号分隔

    在我的数据库中 我有类似的值 256 23 200 33 89 33 133 45 我必须将这些值乘以千 然后将结果格式化为价格 逗号分隔 256 23 x 1000 256230 I want to show this as 256 23
  • 如何比较行内的重叠值?

    我似乎对这个 SQL 查询有问题 SELECT FROM appts WHERE timeStart gt timeStart AND timeEnd lt timeEnd AND dayappt boatdate 时间格式为军用时间 物流
  • 删除重复的行并需要在mysql中保留所有行中的一个[重复]

    这个问题在这里已经有答案了 我想删除基于两列的重复行 但需要保留所有行 1 行 重复行可以多于两行 例如 ID NAME PHONE 1 NIL 1234 2 NIL 1234 3 NIL 1234 4 MES 5989 我想从上面 3 行
  • 重置 MySQL root 密码不起作用

    我花了很多时间阅读并尝试了数十种重置 root 密码的方法 但我一无所获 我发现 并尝试过 的最完整的说明如下 顺便说一句 我在 Win7 32 位上运行 MySQL 5 5 我创建了一个文件 c mysqlinit txt 其中包含两行
  • Slim 3 - 斜杠作为路由参数的一部分

    我需要使用可以包含斜杠 的参数来编写 URL 例如 经典的 hello username 路线 默认情况下 hello Fabien将匹配此路线 但不匹配 hello Fabien Kris 我想问你如何在 Slim 3 框架中做到这一点
  • 如果文件名减去扩展名,.htaccess url 重写行为将被覆盖。与网址相同

    我正在尝试整理 URL 并从中删除 php 扩展名等 我位于网站的基本文件夹中 因此没有可以优先处理的父 htaccess 文件或其他文件 这是我的 htaccess 代码 RewriteEngine On RewriteRule give
  • 使用 PHP 创建图表并导出为 PDF

    我正在寻找有关使用 PHP 创建图表的建议 我还希望能够将这些图表导出到 PDF 文档 我目前正在使用谷歌图表 但我不喜欢将我的所有信息发送到谷歌的想法 我更喜欢自己的托管解决方案 我见过很多 Flash 解决方案 但我不知道有什么方法可以
  • __callStatic():从静态上下文实例化对象?

    我对 PHP 中的 静态 和 动态 函数和对象如何协同工作感到困惑 特别是在 callStatic 方面 callStatic 的工作原理 您可以有一个普通的班级 MyClass 在班级内您可以 放置一个名为 callStatic 的静态函

随机推荐

  • 解决“无法调用 NSManagedObject 类上的指定初始值设定项”

    我是 Swift 新手 我正在尝试学习如何使用 Core Data 但我收到了这个错误 我不确定我做错了什么 我在网上搜索并尝试了一些方法 但我无法得到正确的结果 Failed to call designated initializer
  • 可选参数的默认值必须是常量

    所以我创建了这个事件跟踪应用程序 我有两个屏幕 即地图和事件列表 我试图让地点列表等于我在应用程序状态中的地点 请记住 placeList 是一个可修改的列表 我需要将地点添加到此列表中 但是 每当我初始化时 我都会收到 可选参数的默认值必
  • 如何检测双精度浮点溢出和下溢?

    我有以下变量 double dblVar1 double dblVar2 它们的值可能很大但小于double max 我对上述变量有各种算术 例如加法 乘法和幂 double dblVar3 dblVar1 dblVar2 double d
  • 检查 Samba 上的符号链接是否与 python 共享

    我可以在 Windows 中使用 Python 知道我有权访问的 Samba 共享上的某些文件是 真实 文件还是符号链接吗 我试过os path islink但它返回 false 如文档所述 如果不支持符号链接 则始终为 False 还有其
  • 有人在 64 位 Windows 7 上成功使用 64 位 Eclipse for Android 2.3 开发吗?

    有人在 64 位 Windows 7 上成功使用 64 位 Eclipse for Android 2 3 开发吗 请正面回答only if 当您通过 Eclipse 的 Run Ctrl F11 调用模拟器时 将安装要调试的应用程序的 A
  • PHP if 是整数的倍数

    在 for 循环中 我需要添加一些仅当循环位于 3 的倍数 减 1 时输出的 HTML 例如 我可以做的是 for i 0 i
  • System.IO.StreamWriter 不会为整个 for 循环写入内容

    我正在尝试用 C 将一长串数字写入文件 但它在列表末尾之前一直停止 例如下面的代码 System IO StreamWriter file new System IO StreamWriter D test txt for int i 0
  • NetworkStream 如何在两个方向上工作?

    我读过 Tcp Echo 服务器的示例 但有些事情我不清楚 TcpClient client null NetworkStream netStream null try client listener AcceptTcpClient net
  • C/C++ 结构体到 C#.Net CF WinCE 的转换

    您好 我正在尝试将 C C 结构转换为 C C C 结构如下 typedef struct NDISUIO QUERY OID NDIS OID Oid PTCHAR ptcDeviceName UCHAR Data sizeof ULON
  • OpenNETCF签名控制问题

    我正在使用 OpenNETCF 中的签名控件 它非常适合我需要的大多数东西 但是 我需要一种方法反转签名并将其重新加载 它有一个调用来获取签名的 字节 GetSignatureEx 它返回一个byte 的签名 然后可以使用以下命令重新加载此
  • 如何在C#中使用Fiddlercore捕获http请求?

    我正在尝试使用 C 中的 fiddlercore 捕获请求标头 这是我的代码 我使用 selenium 访问我想要获取请求标头 网络表单的网页 我可以访问网页 但无法使用 fiddlercore 捕获任何内容 我知道我必须使用委托和 Beg
  • ASP.net MVC - 呈现包含不同类型的列表,每种类型具有不同的视图

    想象一下 我有一个实现名为 ISummary 的接口的对象列表 该列表中的对象可能具有附加属性 即 public interface ISummary Guid Id get set string Title get set DateTim
  • 控件显示在设计器中但不显示在模拟器中

    这是我的第一个 Xamarin 应用程序 我在 Visual Studio 中设置了环境 并且有一个可以在 Android 模拟器中运行的模板项目 将几个控件拖放到设计器表面后 我发现当我在模拟器中运行应用程序时 我添加的两个控件 一个按钮
  • 何时使用reinterpret_cast?

    我对以下内容的适用性有点困惑reinterpret cast vs static cast 根据我的阅读 一般规则是当类型可以在编译时解释时使用静态强制转换 因此这个词static 这也是 C 编译器在内部用于隐式转换的转换 reinter
  • 在 ORM 查询中使用原始 SQL

    是否可以使用您自己的原始 SQL 进行编辑或覆盖 ORM 生成的 SQL 或者 ORM 是否足够灵活 可以构建几乎任何我能想象到的查询 具体来说 这是我试图进行的查询 也许通过 ORM 构建并不太难 尽管我看不到任何明显的构建路径 这是模型
  • 滚动时修复列标题 - jqgrid

    如果我的网格数据在当前窗口上滚动 是否可以在滚动数据时冻结列标题 以便列标题始终可见 就像在 Excel 中一样 我使用 height auto 因为我不想修复网格高度 提前致谢 如果网格是页面上最顶层的元素 则使用position fix
  • 如何使用绑定更新 Azure 函数中的 Azure 表行?

    我正在使用node和Azure Functions使用functions json中定义的绑定来更新我的azure表 我能够使用 out 绑定插入行 但找不到任何有关如何更新它们的文档 函数 json tableName myTable c
  • 在 OSGi Bundle 中使用受限类

    为了使用 Endpoint 通过 SSL 进行发布 我需要访问包下的类com sun net httpserver 通过使用 Eclipse IDE 我找到了一种使用此类的方法 但是导出捆绑包并在另一个春分 OSGi 安装中运行它们我无法启
  • 如何使用 BasicAuth 保护自定义端点?

    假设我已使用 BasicAuth 启用了对资源的身份验证 class MyBasicAuth BasicAuth def check auth self username password allowed roles resource me
  • 如何使用 PHP Mysql 创建总账/T 型账户

    我正在尝试创建一个复式记账财务会计系统 我已经完成了数据库的设计 请检查此链接以查看我的数据库的图表 http i39 tinypic com juhbv6 png 我已经尝试了很多开发 mysql 查询来生成总账 但我没有任何进展 我所能