Есть таблица исполнителей UNITS в которой есть поле HOME, содержащее ID региона куда исполнитель желал бы отправиться
Есть таблица заказов ORDERS в которой нас интересует только поле REGTO - регион куда направлен заказ.
Задача - прицепить к таблице ORDERS некое поле ISHOME которое покажет есть ли в таблице исполнителей хотя бы один человек, который хочет направиться в район, входящий в тот же регион, в который входит REGTO из таблицы заказов.
Для простоты расскажу человеческим языком Водитель просит диспетчера отправить его "домой" с заказом. То есть взять заказ, уехать в район проживания, и закончить работу. Диспетчер ставит ему пометку этого региона (поле HOME таблицы UNITS). Появляется заказ, ведущий в тот же регион, к которому принадлежит желаемый район отправки для водителя. Заказ должет быть помечен специальной пометкой, чтобы диспетчер видел, что есть желающий(ие) отправиться туда "с последнм заказом".
Раньше делал так:
Создавал Calculated поле IsHome которое обсчитывалось в OnCalcFields с помощью выполнения запроса:
Код: Выделить всё
SELECT UN.UNITID FROM UNITS UN
WHERE UN.HOME IN
(
SELECT RG.REGID
FROM REGION RG
WHERE RG.MACROREG IN
(SELECT RG1.MACROREG
FROM REGION RG1
WHERE RG1.REGID = :REGTO
)
)
Прикол еще в том, что поле должно быть именно динамическим. Нельзя физически создать поле и заполнять при добавлении заказа, потому что пометка с водителя может быть снята в любой момент, и надо, чтобы в этом случае пропала пометка и с заказа...