gpt4 book ai didi

php - 在不使用 UNION ALL 的情况下将两个查询合并为一个

转载 作者:可可西里 更新时间:2023-11-01 07:53:54 25 4
gpt4 key购买 nike

我有以下两个 mysql 查询,我正在尝试将它们合并为一个。

查询 1:

$getData = $this->db->query("SELECT *,accounts.name AS DebitAccountName ,debit_side.amount AS DebitAmount
FROM credit_side
LEFT JOIN debit_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
LEFT JOIN accounts ON accounts.code = credit_side.account_code
WHERE debit_side.account_code='1001'");

查询 2:

 $getData = $this->db->query(SELECT *,accounts.name AS CreditAccountName,credit_side.amount AS CreditAmount
FROM debit_side
LEFT JOIN credit_side ON debit_side.transaction_id_dr = credit_side.transaction_id_cr
LEFT JOIN transaction_info ON transaction_info.transaction_id = debit_side.transaction_id_dr
LEFT JOIN accounts ON accounts.code = debit_side.account_code
WHERE credit_side.account_code='1001'");

我已经尝试过 UNION ALL 但这实际上在这种情况下不起作用,问题是当我回显 $DebitAccountName 它也会显示 $CreditAccountName 的结果,我不想要。

我正在使用 Codeigniter,在我的 View 文件中,我的目标是像这样回应结果。

 <?php if(count($records) > 0) { ?>

<?php foreach ($records as $row){ ?>

<?php echo $row['DebitAccountName']; ?>
<?php echo $row['DebitAmount']; ?>

<?php echo $row['CreditAccountName']; ?>
<?php echo $row['CreditAmount']; ?>

你能帮我把两个查询合二为一吗?

提前致谢:)

最佳答案

我已经合并了这些查询

        $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();

也可以在这里查看编辑

How to create General Ledger/T-Account using PHP Mysql

感谢@vyegorov,这是此查询的修改和优化版本

Strange Behaviour of Group by in Query which needs to be optimized

关于php - 在不使用 UNION ALL 的情况下将两个查询合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10239874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com