简体   繁体   English

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

[英]mysql - querying 2 tables in one query and creating the difference of the two results.

I'm currently running two queries in PHP, then take the result of each to create the difference: 我目前正在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;

Is it possible to combine this into one query easily? 是否可以轻松地将其合并为一个查询? How? 怎么样?

You need to run each query individually then JOIN them as derived tables: 您需要单独运行每个查询,然后将它们作为派生表进行联接:

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;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM