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#
将其用作单个查询。
我在 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#
将其用作单个查询。