2016-06-07 170 views
0

我有2個表中mariadb是治療和付款。sql查詢完全加入

處理:ID(INT(11)),treatment_name(VARCHAR(255)),treatment_date(日期)

的支付方式:ID(INT(11)),treatment_id(INT(11)),支付金額(十進制(10,2)),PAYMENT_DATE(日期)

我想列出從兩個表中的記錄給定日期範圍,例如從2016年1月1日至2016年6月6日

1-如果治療是在給定的日期範圍內並有付款或者 2 - 如果治療不在日期範圍之間但是付款與付款日期之間的時間在給定日期範圍之間。

任何人都可以幫我設置查詢嗎?

回答

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'; 
0

爲了給你一個開始,下面將加入兩個表,則需要根據日期添加過濾:

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

我相信你可以做其他你自己。

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# 

使用這種單查詢。