Товарищи, подскажите, пожалуйста, я самоучка, загнался темой прописать конкретный запрос, но не как не могу сообразить как это сделать грамотно.
Суть запроса:
У меня есть 4 таблицы:
Customer 1 содержит информацию Customer 2 содержит информацию
ID1.1 personalfileid datestar1, dateend1 ID2.1 personalfileid datestar1, dateend1
ID1.2 personalfileid datestar2, dateend2 ID2.2 personalfileid datestar3, dateend3
ID1.3 personalfileid datestar3 dateend3 ID2.3 personalfileid datesta1r, dateend1
ID1.4 personalfileid datestar4, dateend4 ID2.4 personalfileid datestar2, dateend2
Customer 3 содержит информацию Customer 4 содержит информацию
ID3.1 personalfileid datestar1, dateend1 ID4.1 personalfileid datestar1, dateend1
ID3.2 personalfileid datestar3 dateend3 ID4.2 personalfileid datestar1, dateend1
ID3.3 personalfileid datestar1 dateend1 ID4.3 personalfileid datesta4r, dateend4
ID3.4 personalfileid datestar4, dateend4 ID4.4 personalfileid datestar2, dateend2
Вот как мне прописать запрос, что бы из всех таблиц по personalfileid отобразить в результате только те ID, которые соответствуют периоду datestar1 dateend1 (период может быть динамичным).
Александр, А это сработает, если в дальнейшем например будут менять условия по которым я буду производить запрос, т.е. personalfileid он тоже будет динамичным и datestar1 dateend1 тоже будут меняться параметры периода. Мне нужно что бы я мог производить запрос по двум указанным(динамичным) данным.
Александр, По сути нужную мне информацию я буду искать только в 4х имеющихся таблицах, но по меняющимся параметрам(datestar1 dateend1 и personalfileid)
select
ID1.1
from Customer 1
where
(datestar1 > $ваша переменная начала интервала$
and
dateend4 < $ваша переменная окончания интервала$)
and personalfileid = $ваша переменная для personalfileid$
UNION
... аналогично для остальных
Александр, так я отображу только инфу в таблице 3.1, но мне нужно что то из разряда:
select id, personalfileid, datestart, dateend
from
Customer 1 as c1
Customer 2 as c2 on c1.personalfileid = c2.personalfileid
Customer 3 as c3 on c2.personalfileid = c3.personalfileid
Customer 4 as c4 on c3.personalfileid = c4.personal fileid
c1 as @personalID
Customer 1 as c1.1
left join Customer 2 as c2.1 on c1.1.datestart = c2.1.datestart
left join Customer 3 as c3.1 on c2.1.datestart = c3.1.datestart
left join Customer 4 as c4.1 on c3.1.datestart = c4.1.datestart
c1.1datestart as date1
left join Customer 1 as c1.2
left join Customer 2 as c2.2 on c1.2.dateend = c2.2.dateend
left join Customer 3 as c3.2 on c2.2.dateend = c3.2.dateend
left join Customer 4 as c4.2 on c3.2.dateend = c4.2.dateend
c1.2datestart as date2
where @personalid = '' and (date1, date2 as date) between 'Дата с' and 'Дата по'
В итоге после указания @personalid и 'Дата с' and 'Дата по' должна сформироваться таблица, в которой будет отображены только те ID из всех 4 таблиц, которые попадают под период, который указывается в параметрах запроса('Дата с' and 'Дата по').
Период можно задать через оператор where и затем beetwen или like, например
Отобразить все personalfield через JOIN
SELECT *
FROM CUSTOMER1 AS C1 JOIN CUSTOMER2 AS C2
ON C1.PERSONALFIELD = C2.PERSONALFIELD
WHERE datestar1 ='&'
And dateend1 ='&'
Personalfield для этого должен совпадать во всех таблицах