указать ID договора, если по неключевым параметрам найден только один подходящий
Всем привет! Access VBA + SQL
Есть таблица t_Contract основных параметров (param1, param2....10) договоров + ID_contract договора.
Есть таблица t_ContractChanges дополнительных параметров (ch_1, ch_2...15) договора + Ch_Contract_ID - ID этого набора.
Связка строк с ID_contract+Ch_Contract_ID - это один конкретный договор.
Может быть связка: ID_contract / Ch_Contract_ID
1 / 5
2 / 6
2 / 8
т.е. одному ID_contract может принадлежать несколько Ch_Contract_ID. Ch_Contract_ID принадлежит только одному ID_contract.
Есть временная таблица t_Buffer со значениями нескольких параметров(buffer1, buffer2...15), соответствующих нескольким параметрам из t_Contract и нескольким из t_ContractChanges. В t_Buffer нет ключей ID из t_Contract и t_ContractChanges. Набор параметров buffer1+...+buffer15 может позволить найти одну или несколько строк с ID_contract+Ch_Contract_ID.
ЗАДАЧА: в поле t_Buffer.buffer_ID всем строкам надо указать один Ch_Contract_ID, если на основе параметров buffer1+...+buffer15 удалось найти только ОДНУ строку с ID_contract+Ch_Contract_ID. Если больше строк нашлось или не нашлось, то ничего не делать
по моей логике это что-то типа
UPDATE t_Buffer
SET buffer_ID= SELECT T.Ch_Contract_ID FROM
(SELECT Ch_Contract_ID, ID_contract, count (*)
FROM t_Buffer
LEFT join t_ContractChanges on ...
LEFT join t_Contract on ...
WHERE buffer1=param1 and buffer2=ch1 and другие параметры
GROUP by Ch_Contract_ID, ID_contract
HAVING COUNT(*) =1) as T
)
в правильном направлении двигаюсь?