Php Sql查询完全联接

Php Sql查询完全联接,php,sql,mariadb,full-outer-join,Php,Sql,Mariadb,Full Outer Join,我在mariadb有两张表,分别是治疗和付款 治疗:id(int(11)),治疗名称(varchar(255)),治疗日期(date) 付款:id(int(11))、治疗id(int(11))、付款金额(十进制(10,2))、付款日期(日期) 我想列出给定日期范围内两个表中的记录,例如从2016-01-01到2016-06-06 1-如果治疗在给定日期范围内且已付款,或 2-如果治疗不在日期范围内,但付款日期在给定日期范围内 任何人都可以帮助我设置查询?要开始,以下内容将连接两个表,您需要根据日

我在mariadb有两张表,分别是治疗和付款

治疗:id(int(11)),治疗名称(varchar(255)),治疗日期(date)

付款:id(int(11))、治疗id(int(11))、付款金额(十进制(10,2))、付款日期(日期)

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

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


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

要开始,以下内容将连接两个表,您需要根据日期添加筛选:

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

我相信您可以自己完成其余的工作。

为了给您一个开始,以下内容将加入这两个表,您需要根据日期添加筛选:

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

我相信您可以自己完成其余的工作。

如果我理解正确,您不需要
完全外部连接。您只需要一个
内部联接
以及正确的
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';

如果我理解正确,您不需要
完全外部联接
。您只需要一个
内部联接
以及正确的
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#

将其用作单个查询。

这可以使用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#
将其用作单个查询