php - 从两个不同的表中减去

标签 php mysql

我有 3 个表“产品列表、销售、返回”,所以假设我有 3 个销售和 2 个返回,如下所示。

这是来自产品列表的 ff 数据

id | pcode | pname | pdesc | 
 1 |  222  | 33uf  | 10v   | 

这是销售的 ff 数据

id | pcode | total | profit
 1 |  222  |  200  |  10
 2 |  222  |  100  |  10
 3 |  222  |  200  |  10

这是返回的 ff 数据

id | pcode | total | lose
 3 |  222  |  200  |  10
 4 |  222  |  100  |  10

我的问题是这样的。我想从产品列表中选择数据,并对销售中的“总”和“利润”值进行求和,并对返回中的“总”和“损失”值进行求和。然后减去我的两个表即可得到结果。预期的结果一定是这样的。

id | pcode | pname | pdesc | total | profit |
 1 |  222  | 33uf  | 10v   | 200   |  10    |

我有这个 ff 代码,但我无法从销售额中减去“总计”,从返回中减去“总计”,从销售额中减去“利润”,从返回中减去“损失”。

$result = mysql_query("SELECT 
    productlist.*, 
    SUM(sales.total)-SUM(return.total) as total, 
    SUM(sales.profit)-SUM(return.lose) as profit

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

最佳答案

您似乎试图使用 AND 连接两个表,这不太正确;)

试试这个:

...
LEFT JOIN `sales` USING (`pcode`)
LEFT JOIN `return` USING (`pcode`)
...

我不完全确定这会起作用,它可能会提示列“pcode”不明确。如果发生这种情况,请尝试以下操作:

...
LEFT JOIN `sales` ON `sales`.`pcode` = `productlist`.`pcode`
LEFT JOIN `return` ON `return`.`pcode` = `productlist`.`pcode`
...

关于php - 从两个不同的表中减去,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18596396/

相关文章:

PHP:输出缓冲区回调不改变输出

php - 如何使用 JavaScript 将数据 POST 到远程服务器?

javascript - PHP 表单未提交但未显示任何错误

mysql - 带 NULL 的唯一键

mysql - WordPress 数据库 : How to remove a word from all posts

php - 从 php 启动 Node 似乎可以让 php 保持运行?

php - PHP数组索引的问题

mysql - 在 mysql 表中查找可用的 IP 范围

MySQL 主键和 VARCHAR(255)

mysql - 避免在 Avg 组中使用临时值