相关疑难解决方法(0)

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

任何人都可以帮我优化这个查询

SELECT 
  `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) 
  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 …
Run Code Online (Sandbox Code Playgroud)

mysql optimization subquery

7
推荐指数
1
解决办法
482
查看次数

将两个查询合并为一个而不使用UNION ALL

我有以下两个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'");
Run Code Online (Sandbox Code Playgroud)

查询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'");
Run Code Online (Sandbox Code Playgroud)

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

我正在使用Codeigniter,在我的视图文件中,我的目标是回应这样的结果.

 <?php if(count($records) > …
Run Code Online (Sandbox Code Playgroud)

php mysql

3
推荐指数
1
解决办法
323
查看次数

Codeigniter:从三个表生成学生成绩单

我的数据库中有以下表格.这些表格midtermfinalterm包含学生的痕迹.

在此输入图像描述

现在我想在单页中显示所有学生的标记表,如下所示:

在此输入图像描述

我知道如何在单个表中查询但在这种情况下我遇到问题,因为有三个表.

我正在使用Codeigniter,请您帮我查看我的模型和视图文件中的代码?

提前致谢 :)

这是我的控制器:

         $this->load->model('Mod_student');
     $data['records1']= $this->Mod_student->check1();
         $this->load->view('view_student',$data);
Run Code Online (Sandbox Code Playgroud)

更新的部分

这是我的看法:

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

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



   <table>
   <tr> <td><?php echo $row['StudentName']; ?></td></tr>

     <tr>

      <td><?php $midDate   =   explode(',',$row['MidDate']);
     foreach($midDate as $md)
         {
         echo $md;
         echo '<br />'  ;
         }
    ?>
         </td> 

       <td><?php $midDate   =   explode(',',$row['MidSubject']);
     foreach($midDate as $md)
         {
         echo $md;
         echo '<br />'  ;
         }
    ?>
      </td> 

       <td><?php $midDate   =   explode(',',$row['MidMarks']);
     foreach($midDate as $md)
         {
         echo $md; …
Run Code Online (Sandbox Code Playgroud)

mysql codeigniter codeigniter-2

1
推荐指数
1
解决办法
2403
查看次数

标签 统计

mysql ×3

codeigniter ×1

codeigniter-2 ×1

optimization ×1

php ×1

subquery ×1