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);
@nbk Я удалил его начало, так как тоже подумал, что это странно, как "tbl_MTO_vs_ETO.ProductLine = [tbl_MTO_vs_ETO].[ProductLine]=[tbl_line_items].[Product_Line]" и "[tbl_MTO_vs_ETO].[ProductLine] =[tbl_line_items].[Product_Line]" делают то же самое для меня. ;; Нет, я еще не пробовал выбирать с соединением. Я вернусь с обновлением.
я добавил еще одно предложение, посмотри, пожалуйста
@nbk выбор и объединение могут найти соответствующие номера заказов и строк, но не извлекают элемент строки продукта.
у вас есть три условия, которые должны быть выполнены, чтобы строка обновлялась. доступ не находит соответствия для этих трех условий, поэтому я спрашиваю, запускаете ли вы выбор с этими тремя предложениями
@nbk Я обновил свой пост, указав мой выбор запроса.
там только 2 по условиям в селекте, в твоем обновлении у тебя 3
@nbk Ах! Я понял!! Я не знал, что "ВКЛ" были условия. Я убрал исходное условие линейки продуктов из запроса на обновление, и теперь оно работает. Моя таблица вставила значения.
@nbk Не могли бы вы поместить свой комментарий в раздел ответов, чтобы я мог его принять? "Запрос UPDATE содержит слишком много условий"
Ваш 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
работает
ваше предложение set забавно, должно быть только одно = Также вы запустили выбор с соединением, чтобы увидеть, есть ли какие-либо строки, которые соответствуют