我有以下查询。如果两个表都有值,但如果其中一个表为空,那么它运行得很好。没有输出。
$result = mysql_query("
SELECT
(SELECT SUM(s.total)-SUM(r.total)
FROM rsales AS s
WHERE r.pcode=s.pcode ) AS total,
(SELECT SUM(s.qty)-SUM(r.qty)
FROM rsales AS s
WHERE r.pcode=s.pcode ) AS qty,
(SELECT SUM(s.discount)-SUM(r.discount)
FROM rsales AS s
WHERE r.pcode=s.pcode ) AS discount,
(SELECT SUM(s.vatable_sales)-SUM(r.profit)
FROM rsales AS s
WHERE r.pcode=s.pcode ) AS profit,
(SELECT SUM(s.vats)-SUM(r.vats)
FROM rsales AS s
WHERE r.pcode=s.pcode ) AS vats,
r.pcode
FROM rreturn AS r
GROUP BY r.pcode;
");
请帮帮我。
答案 0 :(得分:1)
WHERE r.pcode = s.pcode )AS total ..等等。
无法输出(通过此查询,如果其中一个表为空),因为“something = nothing”不能成为某种东西。好吧..至少在PHP中大声笑。
您的table1正在table2中搜索相同的值。由于空表中没有值,因此输出无效= 0.
要使“输出”起作用,您在BOTH表中绝对需要相同的pcode值。
答案 1 :(得分:0)
您将要修改代码以不使用$mysql_query
,因为这是从PHP运行SQL查询的错误方法。
直接来自该链接:
自PHP 5.5.0起,此扩展程序已弃用,并将在中删除 未来。相反,应该使用MySQLi或PDO_MySQL扩展。 另请参阅MySQL:选择API指南和相关常见问题解答以获取更多信息 信息。该功能的替代方案包括:
查看this page以了解从PHP运行SQL查询的其他方法。此外,您可能希望在PHP中与数据库服务器上进行这些计算。看起来你在内联查询中试图做太多。
有关该主题的更多信息,请参阅此问题:What are the pros and cons of performing calculations in sql vs. in your application。