查询从一个表中获取条件的总和,并将其添加到另一个表中的相同条件

时间:2014-09-09 00:42:08

标签: php mysql

我所拥有的是两张桌子;

heli_acft

  
      
  • acft_id
  •   
  • acft_reg
  •   
  • acft_hours
  •   

heli_flt

  
      
  • flt_id
  •   
  • flt_acft
  •   
  • flt_colhr
  •   

acft_idflt_acft相关联。

我希望得到表格中每个flt_colhr的所有flt_acft的总和,然后将该数字添加到acft_hoursacft_id的值。< / p>

然后,结果将在表格中显示为<?php echo data[???] ?>

关于如何做到这一点的任何想法?

2 个答案:

答案 0 :(得分:1)

加入表并计算总和。我使用LEFT JOIN来获得没有飞行的飞机的零结果。

SELECT acft_id, acft_hours + IFNULL(SUM(flt_colhr), 0) AS total_colhr
FROM heli_acft 
LEFT JOIN heli_flt ON acft_id = flt_acft
GROUP BY acft_id

答案 1 :(得分:0)

假设acft_idflt_acft表中的唯一标识符...

这是一种返回指定结果集的方法,添加&#34;小时&#34; (从heli_flt到&#34;小时&#34;从heli_acft

 SELECT a.acft_id
      , a.acft_hours
      , IFNULL(f.flt_hours,0)
      , a.acft_hours + IFNULL(f.flt_hours,0) AS total_hours
   FROM heli_acft a
   LEFT
   JOIN ( SELECT SUM(h.flt_colhr) AS flt_hours
               , h.flt_acft
            FROM heli_flt h
           GROUP BY h.flt_acft
        ) f
     ON f.flt_acft = a.acft_id

内联视图计算f计算每个heli_flt flt_acft小时的总和。加入heli_acft以获取acft_hours,我们只需添加两列的值即可。我们使用&#34;外部&#34;加入,以便我们可以返回heli_acft中没有heli_flt中任何相关行的行,并使用IFNULL()函数将NULL值替换为零。