Мадорский Г.В. wrote:
А когда таковых больше одного - получаем multiple rows in singleton
select?
А как оно там больше одного получится при условии, что диапазоны дат для
каждой версии записи не пересекаются?
Чуть ниже.
И чем битвин лучше фирста по индексу?
Select D.Num, C.Address
from Doc D
Inner Join Clients C on D.IdClient = C.IdClient and D.Dat between C.StartDt
and C.EndDt
А с фирстом еще и подзапрос рисовать придется...
Ды ну?
Select D.Num, C.Address
from Doc D
Inner Join Clients C on D.IdClient = C.IdClient_Generation
a фирст нужен только для определения IdClient_Generation в момент
создания документа. Если чо передалать задним числом - ну поапдейтим, не
переломимся.
Не говоря уж о том, что решение задачи обеспечения непересекающихся
диапазонов в активной многопользовательской среде лично мне неизвестно.
Это да. Тут сложнее. Сходи на www.ibase.ru и почитай статью про
блокировки :)))
Ай, Глебушка, не надо ля-ля :) Там подвижки/сжатия/растяжения массы
периодов нужны по результатам редактирования одного, какие там статьи
про блокировки... Ты подумай как-нить на досуге например о календарном
планировании загрузки оборудования деталями, требующими разной
продолжительности обработки на разных единицах. Хотя бы в количестве
трёх штук одного и двух другого. Только крышу заранее подвяжи чем-нить,
чтоб не съехала незаметно ;)
--
Regards. Ded.