1

我想在我的数据库上运行这样的查询:

SELECT SUM( t1.value ) AS total1, SUM( t2.value ) AS total2, SUM( t3.value ) AS total3, SUM( t4.value ) AS total4
FROM pay1 t1, pay2 t2, pay3 t3, pay4 t4
WHERE t1.date = '2010-04-29'
AND t2.date = '2010-04-29'
AND t3.date = '2010-04-29'
AND t4.date = '2010-04-29'

我正在生成一份付款报告,我希望根据匹配日期查看每个表中的付款总额。问题是某些表不满足日期条件,如果不满足,我希望它们显示为 0 值。目前,如果任何表格与日期不匹配,我会得到 0 个结果。我想在不满足日期的任何地方显示 0 值,并且其他字段应该与找到的值一起出现。

对我来说完美的操作数是“ANDOR”,这样它就不会受到任何表格中没有数学运算的任何日期的限制。不幸的是,据我所知,ANDOR 不存在,我该怎么办?

任何人都可以帮忙吗?谢谢。

4

2 回答 2

3

你要

SELECT
  (SELECT SUM( value ) FROM t1 WHERE date = '2010-04-29') AS total1,
  (SELECT SUM( value ) FROM t2 WHERE date = '2010-04-29') AS total2,
  (SELECT SUM( value ) FROM t3 WHERE date = '2010-04-29') AS total3,
  (SELECT SUM( value ) FROM t4 WHERE date = '2010-04-29') AS total4
于 2010-05-04T23:02:31.193 回答
0

听起来您想使用外连接,而不是默认的内连接。

外连接不要求两个连接表中的每条记录都有匹配的记录。即使不存在其他匹配记录,连接表也会保留每条记录。外连接进一步细分为左外连接、右外连接和全外连接,具体取决于保留来自哪个表(左、右或两者)的行。

-维基百科

于 2010-05-04T22:59:23.590 回答