У меня есть 2 таблицы в mariadb, которые являются лечения и оплаты.
Обработки: id (int (11)), имя_ лечения (varchar (255)), дата_ лечения (дата)
Платежи: id (int (11)), treatment_id (int (11)), payment_amount (десятичное (10,2)), payment_date (дата)
Я хочу перечислить записи из обеих таблиц для заданного диапазона дат, например, с 2016-01-01 по 2016-06-06
1-Если лечение находится между заданным диапазоном дат и имеет оплату ИЛИ
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';
Это можно сделать с помощью 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#
используйте это как одиночный запрос.
Для начала, к обеим таблицам присоединятся следующие элементы, вам нужно будет добавить свою фильтрацию по дате:
SELECT *
FROM Treatments as t1, Payments as t2
WHERE t1.id = t2.treatment_id;
Я верю, что вы можете сделать все остальное самостоятельно.