您好我的数据库中有两张表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
答案 0 :(得分:0)
您要么使用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
答案 1 :(得分:0)
您可以使用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())
,但这很小。如果您认为它使查询更具可读性,请更改 - 您的电话:)
但最重要的是,如果这不仅仅是学校作业或学习练习,请使用PDO
或MySQLi
。即使它是一个学习练习,尝试让它按原样运行然后转换为PDO或MySQLi - 你需要在“现实世界”中使用它们。