Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择3个不同的表_Php_Mysql - Fatal编程技术网

Php 选择3个不同的表

Php 选择3个不同的表,php,mysql,Php,Mysql,我有3个表名为rsales,rreturn,productlist。表rsales和rreturn有total列。我的目标是,我要将rsales中的所有total值和rreturn表中的total值相加,并仅从productlist表中选择特定值 比如说,我从productlist表中获得了以下数据: id | pcode | pname | pdesc | 1 | 222 | 33uf | 10v | id | total | pcode | 1 | 200 | 222

我有3个表名为
rsales
rreturn
productlist
。表
rsales
rreturn
total
列。我的目标是,我要将
rsales
中的所有
total
值和
rreturn
表中的
total
值相加,并仅从
productlist
表中选择特定值

比如说,我从
productlist
表中获得了以下数据:

id | pcode | pname | pdesc | 
1  |  222  | 33uf  |  10v  |
id | total | pcode |
1  |  200  | 222   |
2  |  200  | 222   |
id | total | pcode |
1  |  50   | 222   |
2  |  20   | 222   |
来自
rsales
表的数据:

id | pcode | pname | pdesc | 
1  |  222  | 33uf  |  10v  |
id | total | pcode |
1  |  200  | 222   |
2  |  200  | 222   |
id | total | pcode |
1  |  50   | 222   |
2  |  20   | 222   |
来自
rreturn
表的数据:

id | pcode | pname | pdesc | 
1  |  222  | 33uf  |  10v  |
id | total | pcode |
1  |  200  | 222   |
2  |  200  | 222   |
id | total | pcode |
1  |  50   | 222   |
2  |  20   | 222   |
输出必须如下所示:

   id | pcode | pname | pdesc | total 
   1  |  222  | 33uf  |  10v  |  470
我的问题是:我想对
rsales
rreturn
表中的所有
total
值求和,然后从
productlist
中选择所有值。我有下面的代码,运行得很好。但它只能对
rsales
表中的总值求和,或者更确切地说,它只能对单个表中的值求和

$result = mysql_query("SELECT 
    productlist.*, 
    SUM(rsales.total) as total, 
        SUM(rsales.vatable_sales) as vatable_sales, 
    SUM(rsales.vats) as vats,
     SUM(rsales.discount) as discount

FROM productlist
LEFT JOIN rsales ON rsales.pcode = productlist.pcode
GROUP BY pcode
ORDER BY total ASC");

你不太清楚什么不适合你。你是否得到了结果,但数字并不是你所期望的?好吧,假设你有三次销售和两次退货,那么通过合并所有表,你会得到六条记录。因此,你的销售额翻了一番,回报翻了三倍

对于一个解决方案,您可以加入聚合:

$result = mysql_query("SELECT 
    productlist.*, 
    sumsales.sum_total + sumreturns.sum_total as total, 
    sumsales.sum_vatable_sales as vatable_sales, 
    sumsales.sum_vats as vats,
    sumsales.sum_discount as discount
    FROM productlist
    LEFT JOIN
    (
      SELECT pcode, SUM(total) as sum_total, SUM(vatable_sales) as sum_vatable_sales, SUM(vats) as sum_vats, SUM(discount) as sum_discount
      FROM rsales
      GROUP BY pcode
    ) AS sumsales ON sumsales.pcode = productlist.pcode
    LEFT JOIN
    (
      SELECT pcode, SUM(total) as sum_total 
      FROM rreturn 
      GROUP BY pcode
    ) AS sumreturns ON sumreturns.pcode = productlist.pcode
    ORDER BY total ASC");

你不太清楚什么不适合你。你是否得到了结果,但数字并不是你所期望的?好吧,假设你有三次销售和两次退货,那么通过合并所有表,你会得到六条记录。因此,你的销售额翻了一番,回报翻了三倍

对于一个解决方案,您可以加入聚合:

$result = mysql_query("SELECT 
    productlist.*, 
    sumsales.sum_total + sumreturns.sum_total as total, 
    sumsales.sum_vatable_sales as vatable_sales, 
    sumsales.sum_vats as vats,
    sumsales.sum_discount as discount
    FROM productlist
    LEFT JOIN
    (
      SELECT pcode, SUM(total) as sum_total, SUM(vatable_sales) as sum_vatable_sales, SUM(vats) as sum_vats, SUM(discount) as sum_discount
      FROM rsales
      GROUP BY pcode
    ) AS sumsales ON sumsales.pcode = productlist.pcode
    LEFT JOIN
    (
      SELECT pcode, SUM(total) as sum_total 
      FROM rreturn 
      GROUP BY pcode
    ) AS sumreturns ON sumreturns.pcode = productlist.pcode
    ORDER BY total ASC");

请向我们展示样本数据。以及该数据的预期输出。我已经提供了一个示例。请向我们展示样本数据。以及该数据的预期输出。我已经提供了一个示例