Sql查询完全加入

时间:2016-06-07 11:10:19

标签: php sql mariadb full-outer-join

我在mariadb有两张桌子,分别是治疗和付款。

治疗:id(int(11)),treatment_name(varchar(255)),treatment_date(date)

付款:id(int(11)),treatment_id(int(11)),payment_amount(十进制(10,2)),payment_date(日期)

我想列出两个表中给定日期范围的记录,例如2016-01-01至2016-06-06

1 - 如果治疗处于给定日期范围之间且已付款或 2 - 如果治疗不在日期范围之间但是付款日期在给定日期范围之间。

任何人都可以帮我设置查询吗?

3 个答案:

答案 0 :(得分:2)

如果我理解正确,您不需要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';

答案 1 :(得分:1)

这可以使用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#

将其用作单个查询。

答案 2 :(得分:0)

为了给你一个开始,以下将加入两个表,你需要根据日期添加你的过滤:

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

我相信你可以自己完成剩下的工作。