mysql 平衡来自不同表两个查询结果

fnx2tebb  于 2023-02-11  发布在  Mysql
关注(0)|答案(2)|浏览(122)

你好,我有两个表在我的数据库1。收入2。结果收入表有ID,日期,价格也结果表完全相同的IM显示今天的价格总和一样

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

5rgfhyps

5rgfhyps1#

您可以使用union allcross 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
zf9nrax1

zf9nrax12#

你可以用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 -你需要在“真实的世界”中使用它们。

相关问题