如何查询两个 tables 按日期分组并计算每个 table 的日期注册表

How to query two tables grouping by date and counting date registries for each table

我使用的是 Firebird 2.5,我有两个 table:

|----------TABLE_1---------|   |----------TABLE_2---------|
|   DATE_1   | SOME_INFO_1 |   |   DATE_2   | SOME_INFO_2 |
| 2015-05-01 |    Brazil   |   | 2015-04-10 |    Bread    |
| 2015-06-23 |   Paraguai  |   | 2015-05-01 |     Air     |
| 2015-05-01 |    Chile    |   | 2015-05-01 |    Water    |
| 2015-05-01 |  Argentina  |

我想按日期对 table 进行分组,这样我就可以计算每个 table 中每个日期有多少注册表。这是预期的结果:

|----------------RESULT_TABLE----------------|
|    DATE    | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 |       0       |       1       |
| 2015-05-01 |       3       |       2       |
| 2015-06-23 |       1       |       0       |

我正在尝试这个:

SELECT
  a.date_1,
  COUNT(a.date_1) AS count_table_1,
  COUNT(b.date_2) AS count_table_2
FROM
  table_1 a
LEFT OUTER JOIN
  table_2 b ON b.date_2 = a.date_1
GROUP BY
  a.date_1, b.date_2
ORDER BY
  a.date_1 ASC, b.date_2 ASC

我得到的结果是:

|----------------RESULT_TABLE----------------|
|    DATE    | COUNT_TABLE_1 | COUNT_TABLE 2 |
| 2014-04-10 |       0       |       1       |
| 2015-05-01 |       6       |       6       |
| 2015-06-23 |       1       |       0       |

感觉我的SQL乱七八糟,但我解决不了

首先,汇总每个 table 中的结果,然后 join 使用 date 列。

select t1.date_1 as dt, isnull(t1_count,0), isnull(t2_count,0)
from
(SELECT date_1, count(*) as t1_count from table_1 group by date_1) t1
full outer join
(SELECT date_2, count(*) as t2_count from table_2 group by date_2) t2
on t1.date_1 = t2.date_2