Как мне заставить мой оператор UPDATE работать на ctree?
Поэтому я пишу сценарий, который вставляет и обновляет на основе определенного условия. Я закончил оператор вставки, но с трудом пытался заставить мой оператор UPDATE работать в разделе сценария CTREEACE DATABASE. Если есть кто-то, кто знаком с ctree, который мог бы помочь, посмотрите, пожалуйста, что-то не так с моим синтаксисом.
UPDATE act
SET tbl71.address = act.address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
act view
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)
city(varcahr)
zipcode(varchar)
dates(varchar)
tbl71 view
----------
trackingid(varchar)
delivery_time(varchar)
state(varchar)
address(varchar)
city(varcahr)
zipcode(varchar)
dates(varchar)
Если адрес существует на основе дат в представлении акта из tbl71, то обновите все столбцы в акте из tbl71
1 ответ
В начале проверьте эти 8 правил:
- Представление определяется на основе одной и только одной таблицы
- Представление должно включать ПЕРВИЧНЫЙ КЛЮЧ таблицы, на основе которой было создано представление
- В представлении не должно быть полей из агрегатных функций.
- Представление не должно иметь ни одного предложения DISTINCT в своем определении
- Представление не должно содержать ни одного предложения GROUP BY или HAVING в своем определении.
- Представление не должно иметь никаких ПОДПИСЕЙ в своих определениях
- Если представление, которое вы хотите обновить, основано на другом представлении, последнее должно быть обновляемым. Ни одно из выбранных выходных полей (представления) не должно использовать константы, строки или выражения значений
Следующая проблема заключается в том, что idk почему вы пытаетесь обновить столбец из другого представления (tbl71), используя from (act), но решать вам.
Если этот пример не работает, все в порядке:
UPDATE act
SET act.address = tbl71 .address
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
Попробуйте увидеть результат этого простого запроса, чтобы убедиться, что объединение или объединение работает:
SELECT *
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
После этого попробуйте добавить *"Где":
SELECT *
FROM act
INNER JOIN tbl71 ON act.address = tbl71.address
WHERE dates = '7/31/2018'
И, наконец, попробуйте получить в обновлении. Самым простым способом может быть воссоздание представлений (сделайте 1 представление вместо 2, чтобы получить окончательные данные, которые вам нужны.)