Php mysql-在一个查询中查询两个表,并创建两个结果的差异。

Php mysql-在一个查询中查询两个表,并创建两个结果的差异。,php,mysql,sql,Php,Mysql,Sql,我目前正在PHP中运行两个查询,然后获取每个查询的结果以创建差异: $sec = 3600; $sql = "SELECT SUM(REVENUE) as C FROM REVENUE_LOG WHERE ENTRY_DATE BETWEEN (DATE_SUB(NOW(), INTERVAL $secs second)) AND (NOW())"; $res = $this->db->query($sql)->result_array(); $rev = $res[

我目前正在PHP中运行两个查询,然后获取每个查询的结果以创建差异:

$sec = 3600;    
$sql = "SELECT SUM(REVENUE) as C FROM REVENUE_LOG WHERE ENTRY_DATE BETWEEN (DATE_SUB(NOW(), INTERVAL $secs second)) AND (NOW())";
$res = $this->db->query($sql)->result_array();
$rev =  $res[0]['C'];

$sql = "SELECT SUM(COST) as C FROM COST_LOG WHERE ENTRY_DATE BETWEEN (DATE_SUB(NOW(), INTERVAL $secs second)) AND (NOW())";
$res = $this->db->query($sql)->result_array();
$cost =  $res[0]['C'];
$profit = $rev - $cost;

是否可以轻松地将其合并到一个查询中?如何操作?

您需要单独运行每个查询,然后将它们作为派生表连接起来:

SELECT R,C, R-C AS difference
FROM (
     SELECT SUM(REVENUE) as R
     FROM REVENUE_LOG 
     WHERE ENTRY_DATE BETWEEN (DATE_SUB(NOW(), INTERVAL $secs second)) AND (NOW())
     ) AS revenue
JOIN (
     SELECT SUM(COST) as C 
     FROM COST_LOG 
     WHERE ENTRY_DATE BETWEEN (DATE_SUB(NOW(), INTERVAL $secs second)) AND (NOW())
     ) AS cost;