Php Sql查询完全联接
我在mariadb有两张表,分别是治疗和付款 治疗:id(int(11)),治疗名称(varchar(255)),治疗日期(date) 付款:id(int(11))、治疗id(int(11))、付款金额(十进制(10,2))、付款日期(日期) 我想列出给定日期范围内两个表中的记录,例如从2016-01-01到2016-06-06 1-如果治疗在给定日期范围内且已付款,或 2-如果治疗不在日期范围内,但付款日期在给定日期范围内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-如果治疗不在日期范围内,但付款日期在给定日期范围内 任何人都可以帮助我设置查询?要开始,以下内容将连接两个表,您需要根据日
任何人都可以帮助我设置查询?要开始,以下内容将连接两个表,您需要根据日期添加筛选:
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#
将其用作单个查询