如何使用组计数功能计算库存?

时间:2019-12-20 10:15:07

标签: php mysql sql join group-concat

我需要这样的结果。我正在使用php和mysql

<table>

   <tr>
    <th>sr no</th>
    <th>product name</th>
    <th>process name 1 - 30(stock of process 1) 
       Process name 2 - 50 (stock of process 2)
    </th>
    <th>Overall Procuct Stock - 80</th>
   </tr>
</table>

目前我有这样的结果

<table>

   <tr>
    <th>sr no</th>
    <th>product name</th>
    <th>process 1 , process 2
    </th>
    <th>Overall Procuct Stock - 80</th>
   </tr>
</table>

其中一种产品的处理过程将是多个,并存储在不同的数据库表中

我使用群组concat从产品ID获取流程列表,但我不明白如何获取库存以及类似这样的结果。这是我的查询

 SELECT pro.product_id
     , pro.product_name
     , pro.product_status
     , pro.product_opening
     , pro.product_setting_check
     , grn_total
     , qc_total
     , inv_qty
     , jobout_qty
     , process_de
     , qc_total_rejected 
  FROM product_mst as pro 
  LEFT 
  JOIN 
     ( SELECT sum(gt.product_qty) grn_total
            , gt.product_id
            , g.grn_status
            , g.product_qc
            , p.product_setting_check 
         FROM tbl_grn_trn gt 
         LEFT 
         JOIN tbl_grn g 
           ON g.grn_id = gt.grn_id 
         LEFT 
         JOIN product_mst p 
           ON p.product_id = gt.product_id 
        WHERE g.grn_status = 0 and !FIND_IN_SET('product_qc', p.product_setting_check) 
          AND gt.company_id = 1 
        GROUP 
           BY gt.product_id
     ) grn 
    ON grn.product_id = pro.product_id 
  LEFT 
  JOIN 
     ( SELECT sum(qc.qc_accepted) qc_total
            , qc.qc_product
            , q.qc_status 
         FROM tbl_qc_trn qc 
         LEFT 
         JOIN tbl_qc q 
           ON q.qc_id = qc.qc_id 
        WHERE q.qc_status = 0 
          AND q.company_id = 1 
        GROUP 
           BY qc.qc_product
     ) qc 
    ON qc.qc_product = pro.product_id 
  LEFT 
  JOIN 
     ( SELECT sum(intrn.product_qty) inv_qty
            , intrn.product_id 
         FROM tbl_invoicetrn intrn 
        WHERE intrn.trancation_status = 0 
          AND intrn.company_id = 1 
        GROUP 
           BY intrn.product_id
     ) invt 
    ON invt.product_id = pro.product_id
  LEFT 
  JOIN 
     ( SELECT SUM(jobout.outward_product_qty) jobout_qty
            , jobout.raw_product_id 
         FROM tbl_jobworktrn jobout 
        WHERE jobout.jobworktrn_status = 0 
          AND jobwork_id != 0 
          AND jobout.company_id = 1 
        GROUP 
           BY jobout.raw_product_id
     ) jout 
    ON jout.raw_product_id = pro.product_id 
  LEFT 
  JOIN 
     ( SELECT GROUP_CONCAT(prm.process_name) process_de
            , pp.product_id 
         FROM tbl_product_process pp 
         LEFT 
         JOIN process_mst prm 
           ON prm.process_id = pp.process_id 
        GROUP 
           BY pp.product_id
     ) pr 
    ON pr.product_id = pro.product_id 
  LEFT 
  JOIN 
     ( SELECT SUM(qc.qc_rejected) qc_total_rejected
            , qc.qc_product
            , q.qc_status 
         FROM tbl_qc_trn qc 
         LEFT 
         JOIN tbl_qc q 
           ON q.qc_id = qc.qc_id 
        WHERE q.qc_status != 2 
          AND q.company_id = 1 
        GROUP 
           BY qc.qc_product
     ) qc1 
    ON qc1.qc_product = pro.product_id 
 WHERE 1 
   AND pro.product_status !=2 
   AND pro.product_id = 1 
 ORDER 
    BY pro.product_name LIMIT 0,10

请提出一些加入联合竞购的方法

0 个答案:

没有答案
相关问题