У меня есть форма, в которой какой-то ввод имеет значение, которое создается с помощью этого запроса:
SELECT e.tree.nombre
FROM d.p
JOIN e.theme ON id = id_capa
LEFT JOIN e.tree ON e.theme.id_tree = e.tree.id
WHERE id_capa = 816
e
и d
- это схемы. id_capa = 816
передается в качестве аргумента запроса из формы, которую я редактирую. Возвращает значение правильно. Теперь я хочу отредактировать это значение в своей форме, поэтому мне нужно ОБНОВИТЬ, но у меня несколько таблиц, я прочитал, что не могу выполнить ОБНОВЛЕНИЕ с помощью JOINS, как мне сделать это ОБНОВЛЕНИЕ?
В вашем исходном SQL-запросе таблица d.p
не используется ни в SELECT
, ни в условиях. Так что его можно пропустить; запрос можно переписать как:
SELECT e.tree.nombre
FROM e.theme
LEFT JOIN e.tree ON e.theme.id_tree = e.tree.id
WHERE e.theme.id = 816
Поскольку запрос выбирает значения из таблицы, объединенной с LEFT JOIN
, результатом может быть NULL
, т.е. объединенная запись из таблицы e.tree
может быть пропущена. В этом случае обновлять нечего.
Существующую соответствующую запись можно обновить с помощью запроса:
UPDATE e.tree
SET nombre = <NEW_VALUE>
FROM e.theme
WHERE e.theme.id = 816 AND e.theme.id_tree = e.tree.id
Вам нужно обновить данные, расположенные в нескольких таблицах, или вам просто нужны данные из вторичной таблицы, чтобы знать, какие строки обновлять в одной таблице?