Php 将脚本查询简化为单个查询

Php 将脚本查询简化为单个查询,php,mysql,Php,Mysql,我有一个脚本,它从MySQL数据库中选择不同的日期,并在该结果中计算信用和借记的总和 请参阅PHP脚本 $query = "SELECT DISTINCT date FROM export WHERE exported = '0'"; $result = $mysqli->query($query); while($row = $result->fetch_object()){ $res_sub = $mysqli->query("SELECT SUM(total) AS

我有一个脚本,它从MySQL数据库中选择不同的日期,并在该结果中计算信用和借记的总和

请参阅PHP脚本

$query = "SELECT DISTINCT date FROM export WHERE exported = '0'";
$result = $mysqli->query($query);
while($row = $result->fetch_object()){
  $res_sub = $mysqli->query("SELECT SUM(total) AS total FROM export WHERE date = '{$row->date}' AND credit = 'credit');
  $row_sub = $res_sub->fetch_object();
  $creditTot = $row_sub->total;

  $res_sub = $mysqli->query("SELECT SUM(total) AS total FROM export WHERE date = '{$row->date}' AND credit = 'debit');
  $row_sub = $res_sub->fetch_object();
  $debitTot = $row_sub->total;

  echo "Date {$row->date}: credit > {$creditTot} debit > {$debitTot}<br>";
}
$query=“选择导出的不同日期='0';
$result=$mysqli->query($query);
而($row=$result->fetch_object()){
$res_sub=$mysqli->query(“选择SUM(total)作为导出中的总计,其中date='{$row->date}'和credit='credit');
$row_sub=$res_sub->fetch_object();
$creditTot=$row\u sub->total;
$res_sub=$mysqli->query(“从导出中选择SUM(total)作为总计,其中date='{$row->date}'和credit='debit');
$row_sub=$res_sub->fetch_object();
$debitTot=$row\U sub->总计;
echo“日期{$row->Date}:credit>{$creditTot}debit>{$debitTot}
”; }
但是现在我需要两个子查询,当第一个查询返回100行时,需要100+(2*100)=300个查询来计算结果


我很确定这可以用一种更好的方式完成,也许只需要一个查询!谁知道答案呢?

可以在同一张表上联接吗?当然可以。实际上,在这个例子中,您可能不需要它-只需从导出组中按日期选择日期、总和(total)?我将在同一个表上查看联接<代码>总额(总计)不起作用,因为我需要将
贷方
总额和
借方
总额分开。不需要加入,请参阅我的答案。太好了,我想这样做是对的。但是我选错了。我先做了IF,然后做了SUM,这就得到了贷记+借记的总数@草莓,你为什么要编辑答案,并将
exported='0'
更改为
exported=0
?因为0是一个整数,不是字符串。@草莓他没有发布他的架构,你怎么知道它不是一个包含
0
的字符串?@草莓,exported确实是一个
int(1)
SELECT date, 
       SUM(IF(credit = 'credit', total, 0)) AS credit_total,
       SUM(IF(credit = 'debit', total, 0)) AS debit_total
FROM export
WHERE exported = 0
GROUP BY date