Php 来自一个查询的多个数学值
我对一个问题有疑问Php 来自一个查询的多个数学值,php,mysql,select,Php,Mysql,Select,我对一个问题有疑问 SELECT CASE WHEN b.value IS NULL THEN sum(d.value) ELSE sum(d.value) + sum(b.value) END AS sumaWydatkow FROM data d LEFT JOIN data_bills b ON d.id = b.data_id WHERE d.typ
SELECT
CASE WHEN b.value IS NULL
THEN sum(d.value)
ELSE sum(d.value) + sum(b.value)
END AS sumaWydatkow
FROM data d
LEFT JOIN data_bills b
ON d.id = b.data_id
WHERE d.type = 0
UNION
SELECT
CASE WHEN b.value IS NULL
THEN sum(d.value)
ELSE sum(d.value) + sum(b.value)
END AS sumaPrzychodow
FROM data d
LEFT JOIN data_bills b
ON d.id = b.data_id
WHERE d.type = 1
我想求两列的和,或者如果其中一列(数据账单)为空,则只求一个表的和,表的列类型有两个版本:0和1
但现在是一个有两个记录的一丛。我想要两列,每列一列。
我在问,一个问题能不能解决这个问题
谢谢尝试以下查询:
SELECT
( SELECT
CASE WHEN b.value IS NULL
THEN sum(d.value)
ELSE sum(d.value) + sum(b.value)
END AS sumaWydatkow
FROM data d
LEFT JOIN data_bills b
ON d.id = b.data_id
WHERE d.type = 0
) type0,
( SELECT
CASE WHEN b.value IS NULL
THEN sum(d.value)
ELSE sum(d.value) + sum(b.value)
END AS sumaPrzychodow
FROM data d
LEFT JOIN data_bills b
ON d.id = b.data_id
WHERE d.type = 1
) type1
演示-->为什么要这样做:
CASE WHEN b.value IS NULL
THEN sum(d.value)
ELSE sum(d.value) + sum(b.value)
END
??这将基于是否根据任意行的b值包含sum(b.value)。你的意思可能只是:sum(d.value)+coalesce(sum(b.value),0)
(当sum(b.value)为空时表示情况…
将是等效的。)
我会这样做(谢谢你的小提琴,科迪尔科):
选择d.类型、总和(d.值)+总和(b.值)
从数据d左连接b上的数据\u账单b。数据\u id=d.id
其中d.输入(0,1)
按d类型分组
请(再次)观看。我不完全明白。也许一些示例数据和期望的结果有助于说明您的问题?想对两列求和吗。此列位于两个不同的表上。但我想通过一个查询来实现这一点。使用UNION,我在结果中有一个coolumn,有两个查询记录。但我希望输出结果分为两列,每列一条记录:)感谢replayPerhaps提供的一些示例数据和期望的结果将有助于说明您的问题?SQL Fiddle示例将非常有用:
SELECT
sum( if(d.type=0, coalesce(d.value,0)+coalesce(b.value,0), null) ) type0,
sum( if(d.type=1, coalesce(d.value,0)+coalesce(b.value,0), null) ) type1
FROM data d
LEFT JOIN data_bills b
ON d.id = b.data_id
WHERE d.type in (0,1);