Попытка взять значение столбца из одной таблицы и обновить его в другой с помощью UPDATE & JOIN

MS Access с SQL пытался использовать эта почта--

Моя цель — использовать tbl_line_items.Order_Number и tbl_line_items.Line_Number в качестве первичных ключей, взять значение столбца tbl_line.items_Product_Line и обновить его до tbl_MTO_vs_ETO.ProductLine.

По сути, я хочу получить линейку продуктов с соответствующей строкой и номером заказа и вставить ее в таблицу MTO vs ETO.

Текущий код:

UPDATE tbl_line_items INNER JOIN tbl_MTO_vs_ETO ON (tbl_line_items.Order_Number = tbl_MTO_vs_ETO.Order) AND (tbl_line_items.Line_Number = tbl_MTO_vs_ETO.Line) AND (tbl_line_items.Product_Line = tbl_MTO_vs_ETO.ProductLine) 
SET tbl_MTO_vs_ETO.ProductLine = [tbl_MTO_vs_ETO].[ProductLine]=[tbl_line_items].[Product_Line];

Мой запрос добавляется, но ничего не возвращает ("Вы собираетесь обновить 0 строк"). Я считаю, что мне следует использовать операторы UPDATE, поскольку записи уже существуют, я только недавно добавил этот столбец линейки продуктов для дальнейшей фильтрации.

Для нбк--

Я выполнил запрос SELECT и JOIN и смог успешно получить порядок фрагментов и номера строк, а также найти строки продуктов для каждой записи. Вопрос в том, как мне перевести его на запрос UPDATE?

Код:

SELECT tbl_line_items.Product_Line, tbl_line_items.Order_Number, tbl_line_items.Line_Number
FROM tbl_MTO_vs_ETO INNER JOIN tbl_line_items ON (tbl_MTO_vs_ETO.line = tbl_line_items.Line_Number) AND (tbl_MTO_vs_ETO.Order = tbl_line_items.Order_Number);

ваше предложение set забавно, должно быть только одно = Также вы запустили выбор с соединением, чтобы увидеть, есть ли какие-либо строки, которые соответствуют

nbk 29.03.2022 22:44

@nbk Я удалил его начало, так как тоже подумал, что это странно, как "tbl_MTO_vs_ETO.ProductLine = [tbl_MTO_vs_ETO].[ProductLine]=[tbl_line_items].[Product_Lin‌​e]" и "[tbl_MTO_vs_ETO].[ProductLine] =[tbl_line_items].[Product_Li‌​ne]" делают то же самое для меня. ;; Нет, я еще не пробовал выбирать с соединением. Я вернусь с обновлением.

Marcus 29.03.2022 22:47

я добавил еще одно предложение, посмотри, пожалуйста

nbk 29.03.2022 22:49

@nbk выбор и объединение могут найти соответствующие номера заказов и строк, но не извлекают элемент строки продукта.

Marcus 29.03.2022 22:56

у вас есть три условия, которые должны быть выполнены, чтобы строка обновлялась. доступ не находит соответствия для этих трех условий, поэтому я спрашиваю, запускаете ли вы выбор с этими тремя предложениями

nbk 29.03.2022 23:02

@nbk Я обновил свой пост, указав мой выбор запроса.

Marcus 29.03.2022 23:06

там только 2 по условиям в селекте, в твоем обновлении у тебя 3

nbk 29.03.2022 23:08

@nbk Ах! Я понял!! Я не знал, что "ВКЛ" были условия. Я убрал исходное условие линейки продуктов из запроса на обновление, и теперь оно работает. Моя таблица вставила значения.

Marcus 29.03.2022 23:11

@nbk Не могли бы вы поместить свой комментарий в раздел ответов, чтобы я мог его принять? "Запрос UPDATE содержит слишком много условий"

Marcus 29.03.2022 23:16
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
9
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш SELECT имеет два условия

SELECT 
    tbl_line_items.Product_Line,
    tbl_line_items.Order_Number,
    tbl_line_items.Line_Number
FROM
    tbl_MTO_vs_ETO
        INNER JOIN
    tbl_line_items ON (tbl_MTO_vs_ETO.line = tbl_line_items.Line_Number)
        AND (tbl_MTO_vs_ETO.Order = tbl_line_items.Order_Number);

но у твоего UPDATE три

UPDATE tbl_line_items 
   INNER JOIN tbl_MTO_vs_ETO 
   ON (tbl_line_items.Order_Number = tbl_MTO_vs_ETO.Order) AND (tbl_line_items.Line_Number = tbl_MTO_vs_ETO.Line) AND (tbl_line_items.Product_Line = tbl_MTO_vs_ETO.ProductLine) 
SET tbl_MTO_vs_ETO.ProductLine = [tbl_MTO_vs_ETO].[ProductLine]=[tbl_line_items].[Product_Line];

эти три условия должны быть выполнены, чтобы UPDATE могло произойти

Так что используйте

UPDATE 
    tbl_MTO_vs_ETO
        INNER JOIN
    tbl_line_items ON (tbl_MTO_vs_ETO.line = tbl_line_items.Line_Number)
        AND (tbl_MTO_vs_ETO.Order = tbl_line_items.Order_Number);
SET tbl_MTO_vs_ETO.ProductLine = [tbl_MTO_vs_ETO].[ProductLine]=[tbl_line_items].[Product_Line];

Так что UPDATE работает

Другие вопросы по теме