Sql查询全连接

Sql query full join

我在 mariadb 中有 2 个 table 是治疗和付款。

处理:id(int(11))、treatment_name(varchar(255))、treatment_date(date)

付款:id(int(11)),treatment_id(int(11)),payment_amount(decimal(10,2)),payment_date(date)

我想列出给定日期范围内 table 的记录,例如从 2016-01-01 到 2016-06-06

1-如果治疗在给定的日期范围内并且有付款或 2-如果治疗不在日期范围内,但付款日期在给定的日期范围内。

谁能帮我设置查询?

首先,下面将连接两个表,您需要添加基于日期的过滤:

SELECT *
FROM Treatments as t1, Payments as t2
WHERE t1.id = t2.treatment_id;

我相信你可以自己完成剩下的事情。

如果我没理解错的话,你不需要full outer join。您只需要一个 inner join 以及正确的 where 子句:

select t.*, p.*
from treatments t inner join
     payments p
     on t.id = p.treatment_id
where t.treatment_date between '2016-01-01' and '2016-06-06' or
      p.payment_date between '2016-01-01' and '2016-06-06';

这可以使用 UNION 完成,如下所示,

SELECT * FROM Treatments WHERE treatment_date BETWEEN #01/01/2016# AND #06/06/2016#
UNION
SELECT * FROM  Payments WHERE treatment_date BETWEEN #01/01/2016# AND #06/06/2016#

将其用作单个查询。