2016-06-07 8 views
0

치료 및 지불 mariadb에 2 개의 테이블이 있습니다.Sql 쿼리 전체 참여

먼트 : ID (INT (11)), treatment_name (VARCHAR (255)), treatment_date (일자)

결제 : ID (INT (11)), treatment_id (INT (11)), PAYMENT_AMOUNT (진수 (10,2)), PAYMENT_DATE (날짜)

내가 2016년 1월 1일에서에 예를 들어, 주어진 기간에 두 테이블에서 레코드를 나열 할 2016년 6월 6일

1 치료 기간이 지정된 기간과 지불 기간 사이에 있거나 2 인 경우 치료 날짜 범위 사이에 있지 않으면 지급 날짜가 지정된 날짜 범위 내에 있습니다.

누구든지 검색어를 설정하는 데 도움이 될 수 있습니까?

답변

2

정확하게 이해하면 full outer join은 필요하지 않습니다. 당신은 단순히 올바른 where 절을 따라 inner join 필요합니다

이 다음과 같이 UNION을 사용하여 수행 할 수 있습니다
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

,

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# 

사용이 아니라 하나의 쿼리.