Вот есть две таблицы - исполнителей, ну, пусть Works и заказов (пусть Orders)
Works три поля
WorkID (понятно, первичный ключ)
WorkStatus (в каком состоянии находится)
и WorkName (понятно)
а Orders - ну для нашего примера пусть
OrderID,
OrderType,
OrderStatus
и WorkID (кто выполняет - может быть и null или 0).
Таблицы в общем случае между собой не завязаны жестко. Но вот, конкретный заказ отдаётся конкретному человеку (для простоты давайте считать, что одному человеку может быть отдан только один заказ и при отдаче другого, первый автоматом считается выполенным, так что в одно время для одного исполнителя может быть только один активный заказ - то есть заказ с неким статусом OrderStatus=2).
Вопрос собственно в следующем. Исполнители отображаются визуально (в моём случае с помощью DBCtrlGrig хотя МЕФ). И надо по разному отображать людей выполняющих заказы разного типа (OrderType). Причём ни Calculated ни Lookup поля не проходят (если интересно, то отрисовка DBCtrlGrid делается в процедуре OnPaintPanel и проверка внутри этой процедуры вычисляемых или lookup полей даёт непредсказуемые результаты, хотя в целом это тоже МЕФ). Так вот вопрос - как грамотно установить эту самую связь между типом заказа, находящегося в определённом состоянии (выполняется), и принадлежащего определённому исполнителю и состоянием исполнителя?
Пусть список исполнителей получаем запросом. Правильно ли будет цеплять в запросе поля из таблицы Orders где по условию отбирать нужные данные?
Код: Выделить всё
select wk.UserID, wk.UserName, od.OrderID, od.OrderType
from Works wk
left join Orders od
on (od.WorkID=wk.WorkID and od.OrderStatus=2)
Подскажите я в правильном направлении думаю, или не учитываю каких-то возможностей РСУБД? В данном случае это будет FB 2.0