• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите разобраться с вычисляемыми полями

  • Автор темы Kraus
  • Дата начала
Статус
Закрыто для дальнейших ответов.
K

Kraus

База в Access. Вот такая проблема:В запросе на выборку вычисляю среднюю скидку на проданный товар(данные храняться в таблице "НакладныеАрхив", товар продается с разной скидкой), нужно полученные значения занести в главную таблицу.


Так выглядит запрос:

SELECT Артикул, Sum(НаРуки*Скидка)/Sum(НаРуки) AS Средняя_скидка
FROM НакладныеАрхив
WHERE Скидка>=0
GROUP BY Артикул;


Можно ли сделать это через UPDATE?
 
E

European

Я так понимаю, что Главная таблица и НакладныеАрхив объединяются по полю Артикул. Тогда что-то вроде (к сожаления точного синтаксиса Access не подскажу):

Код:
Update ГлавнаяТаблица
SET Средняя_скидка = 
(
SELECT Артикул, Sum(НаРуки*Скидка)/Sum(НаРуки) AS Средняя_скидка
FROM НакладныеАрхив
WHERE Скидка>=0
GROUP BY Артикул
)
WHERE ГлавнаяТаблица.Артикул = НакладныеАрхив.Артикул
 
K

Kraus

Я так уже пробовал. Вылазит ошибка: в запросе SELECT происходит выборка двух полей.....
 
?

????

[sql]Update ГлавнаяТаблица
SET Средняя_скидка =
(
SELECT Sum(НаРуки*Скидка)/Sum(НаРуки)
FROM НакладныеАрхив WHERE Скидка>=0
GROUP BY Артикул
)
WHERE ГлавнаяТаблица.Артикул = НакладныеАрхив.Артикул[/sql]
 
K

Kraus

Попробовал все вроде правильно, должно бы получиться, но вдруг еще косяк, такая ошибка: "В операции должен использоваться обновляемый запрос". Как с этим то бороться?




Спасибо за участие! :D
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!