如果其中一个表为空,则不显示输出

时间:2013-09-09 17:27:00

标签: php mysql

我有以下查询。如果两个表都有值,但如果其中一个表为空,那么它运行得很好。没有输出。

$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;
");

请帮帮我。

2 个答案:

答案 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