【问题标题】:balance of two query result from different tables来自不同表的两个查询结果的平衡
【发布时间】:2013-03-25 13:58:43
【问题描述】:

您好,我的数据库中有两个表 1. 收入 2. 结果 收入表有 ID、日期、价格和结果表完全相同,我显示今天的价格总和

mysql_select_db($database_conn, $conn);
$query_gelen_gun = sprintf ("SELECT SUM(tutar) FROM cepbank WHERE tarih >= DATE(NOW())");
$gelen_gun = mysql_query($query_gelen_gun, $conn) or die(mysql_error());
$row_gelen_gun = mysql_fetch_assoc($gelen_gun);
$totalRows_gelen_gun = mysql_num_rows($gelen_gun);

mysql_select_db($database_conn, $conn);
$query_giden_gun = sprintf ("SELECT SUM(tutar) FROM cepbank_out WHERE tarih >= DATE(NOW())");
$giden_gun = mysql_query($query_giden_gun, $conn) or die(mysql_error());
$row_giden_gun = mysql_fetch_assoc($giden_gun);
$totalRows_giden_gun = mysql_num_rows($giden_gun);

。 . .

<p>Total Income for Today:<?php echo $row_gelen_gun['SUM(tutar)']; ?></p>
<p>Total Outcome for Today:<?php echo $row_giden_gun['SUM(tutar)']; ?></p>

现在我如何显示这两个结果的平衡,例如 $row_gelen_gun['SUM(tutar)'] = 100 和 $row_giden_gun['SUM(tutar)'] = 50

余额应该是 100-50 =50 ?

注意:查询中的价格=tutar

【问题讨论】:

标签: mysql balance


【解决方案1】:

您要么想使用union all 要么使用cross join。使用union all 获取两行结果。使用cross join 在同一行的两列中获取结果。

这是cross join 的示例:

select sumcep, sumcepout
from (SELECT SUM(tutar) as sumcep
      FROM cepbank
      WHERE tarih >= DATE(NOW())
     ) t cross join
     (SELECT SUM(tutar) as sumcepout
      FROM cepbank_out
      WHERE tarih >= DATE(NOW())
     ) t2

【讨论】:

  • 非常感谢,我将如何计算 balance=sumcep-sumcepout 并显示余额
【解决方案2】:

您可以使用 Gordon 的查询来完成,如果您希望 MySQL 计算余额,只需将第一行更改为:

select sumcep, sumcepout, sumcep-sumcepout as balance

如果您想保持当前的方法(两个单独的查询),这里有一些建议:

首先,我会为这些列设置别名,因为将它们都命名为 SUM(tutar) 可能会造成混淆。另外,当涉及到一个函数时,我一直对信任生成的列名感到不安。所以代替这些:

SELECT SUM(tutar) FROM cepbank WHERE tarih >= DATE(NOW())
SELECT SUM(tutar) FROM cepbank_out WHERE tarih >= DATE(NOW())

...试试这些:

SELECT SUM(tutar) AS Income FROM cepbank WHERE tarih >= DATE(NOW())
SELECT SUM(tutar) AS Outcome FROM cepbank_out WHERE tarih >= DATE(NOW())

然后为了平衡,你可以这样做:

$balance = $row_gelen_gun['Income'] - $row_giden_gun['Outcome'];

PHP 将为您转换/转换为数字。

顺便说一句,您可以使用CURRENT_DATE 代替DATE(NOW()),但这并不重要。如果您认为它使查询更具可读性,请更改 - 您的电话:)

但最重要的是,如果这不仅仅是学校作业或学习练习,请使用PDOMySQLi。即使这是一个学习练习,也请尝试让它按原样工作,然后转换为 PDO 或 MySQLi - 您需要在“现实世界”中使用它们。

【讨论】:

  • 选择 sumcep, sumcepout, sumcep-sumcepout 作为平衡 这解决了我的问题 谢谢我正在使用 Dreamweaver 它正在为我创建代码然后我在需要时进行编辑 我刚刚开始编码 我会了解什么是 MySQLi 和 PDO 非常感谢您的帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-14
  • 2021-03-07
  • 1970-01-01
相关资源
最近更新 更多