首页 > 解决方案 > 为什么不显示插入数据,只显示更新数据?

问题描述

我有三个表。第一个表显示输入数据,第二个表显示输出数据,第三个是总表,我们显示我们的产品总余额。

1.input table
Date   | product_name | in_qty 
5/7/19 |     A        |  10    
5/7/19 |     B        |  15    
6/7/19 |     A        |  10   
6/7/19 |     C        |  20
2.output table 
Date   | product_name | out_qty 
7/7/19 |     A        |  10    
8/7/19 |     B        |  10    
3.total balance table 
 product_name  | in_qty | out_qty | total_qty
     A         |  20    |  10     |   10      
     B         |  15    |  10     |   5           

我的问题是输入表中的产品 C 未显示在总表中。哪个产品只在总表中显示的那些产品合计添加到输出表中。

$res=mysqli_query($con, "SELECT i.product_name, i.in_qty, o.product_name,o.out_qty
 FROM input i, output o
 WHERE i.product_name= o.product_name");

                                    while($row=mysqli_fetch_array($res))    
                                    {

                                     $in_name = $row['product_name'];
                                     $inqty = $row['Input_qty'];;
                                     $out_name = $row['product_name'];
                                     $outqty = $row['Out_qty'];

                                     $sql=mysqli_query($con, "INSERT INTO total (product_name,Input_qty,Out_qty) 
                                VALUES('$in_name','$inqty','$outqty')");

                                    $sql2=mysqli_query($con, "UPDATE total t2
                                                INNER JOIN (
                                                  SELECT product_name, SUM(in_qty) as qty_total
                                                  FROM input
                                                  GROUP BY product_name
                                                ) t1 ON t2.product_name= t1.product_name
                                     SET t2.in_qty = t1.qty_total");
                                    }

我的期望是:

3.total balance table 
 product_name  | in_qty | out_qty | total_qty
     A         |  20    |  10     |   10      
     B         |  15    |  10     |   5  
     C         |   20   |         |  20

标签: phpmysql

解决方案


你的mysql查询是错误的。

使用以下查询。

SELECT columns  
FROM table1  
LEFT [OUTER] JOIN table2  
ON table1.column = table2.column;  

在你的情况下:

  SELECT input.product_name , input.in_qty , output.out_qty
  FROM input  
  LEFT [OUTER] JOIN output  
  ON input.column = output.column; 

推荐阅读