问题描述
我有一个简单的表结构,其中包含 reagent_bottles 和 reagent_aliquots 的记录。
从瓶子创建等分试样,等分试样记录将外键bottle_id指向了瓶子id。
要获取特定试剂的总体积(同时计算瓶中的体积和等分试样中的体积),下面的查询可以部分完成此工作:
SELECT
COALESCE(SUM(rb.volume),0) AS bVolume,COALESCE(SUM(ra.volume),0) AS aVolume
FROM reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;
返回以上试剂编号(408):
bVolume | aVolume
2| 6
添加bVolume和aVolume是正确的答案,即8。
问题是,如何重写上面的查询以创建一个新字段 total_volume ,将查询中的bVolume和aVolume相加?
我尝试过:
SELECT
COALESCE(SUM(rb.volume),0) AS aVolume,SUM(bVolume + aVolume) AS total_volume
FROM
reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;
但收到错误未知列,字段列表中的bVolume ..!
解决方法
汇总原始列:
SELECT
COALESCE(SUM(rb.volume),0) AS bVolume,COALESCE(SUM(ra.volume),0) AS aVolume,SUM(COALESCE(rb.volume,0) + COALESCE(ra.volume,0)) AS total_volume
FROM
reagent_bottles AS rb
LEFT JOIN
reagent_aliquotes AS ra
ON rb.id = ra.bottle_id
WHERE reagent_id = 408;