powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подзапрос с группировкой не дает сделать Update
9 сообщений из 9, страница 1 из 1
Подзапрос с группировкой не дает сделать Update
    #32490253
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В принципе, этот вопрос уже обсуждался здесь, но я опять наступаю на эти грабли.\r
\r
В упрощенном виде задача такова.\r
Есть таблица data(key,name,flag)\r
Например там такие данные:\r
key\tName\tflag\r
___________________\r
1\tМаша\tНет\r
5\tМаша\tНет\r
3\tДаша\tНет\r
4\tЛюба\tНет\r
и таблица input(name), там\r
Name\r
_____\r
Маша\r
Даша\r
\r
Надо в таблице data проставить флаг девушкам из таблицы input, которые есть в таблице data и key которых максимальный, то есть в данном примере там, где key=5 и key=3\r
Делаю так:\r
qry1\r
SELECT Max(data.key) AS [key]\r
FROM [input] INNER JOIN data ON input.Name = data.Name\r
GROUP BY data.Name\r
WITH OWNERACCESS OPTION;\r
А дальше как ни пытайся использовать этот подзапрос, например так:\r
UPDATE qry1 INNER JOIN data ON qry1.key = data.key SET data.flag = True\r
WITH OWNERACCESS OPTION; (или через in, или через where)\r
вываливается злополучная ошибка "в операции должен использоваться обновляемый запрос". Групповая операция акцессу видите-ли , не нравится.\r
Как решить проблему без dlookup и кэш-таблицы?
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490321
\/ig
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
update  Table1 INNER JOIN Table2 ON Table1.Name = Table2.Name
set flag=true
where 
 table1.key=(select max(key) from table1 t where  t.name=table1.name)
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490419
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vig, это не подходит, он одной Маше флаг проставляет:
UPDATE data INNER JOIN [input] ON data.Name = input.Name SET data.flag = True
WHERE (((data.key) In (SELECT Max([key]) AS keyMax
FROM data, [input]
WHERE (((data.Name)=[input]![name])))))
WITH OWNERACCESS OPTION;
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490455
(c)\/IG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
какой-то у тебя Access неправильный
Специально проверил
Код: plaintext
1.
2.
3.
4.
Key	Name	flag
>1	masha	No
>3	dasha	Yes
>4	luba	No
>5	masha	Yes


Access2000
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490480
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG,
Значит я не правильно его понял. Поясни, пожалуйста. Я неправилно его "перевел"? Непонятно, как он может работать - в подзапросе группировки нет - он будет возвращать одно значение.
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490511
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG, перевел еще раз твой запрос в термины условия - опять не то - что за чертовщина:
UPDATE data INNER JOIN [input] ON data.Name = input.Name SET data.flag = True
WHERE (((data.key) = (SELECT Max([key]) AS keyMax
FROM data d
WHERE (((d.Name)=[data]![name])))))
WITH OWNERACCESS OPTION;
Результат:
key Name flag
1 Маша Нет
5 Маша Да
3 Даша Да
4 Люба Да
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490521
(c)\/IG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Перевод :)
Код: plaintext
1.
2.
3.
update  [data] INNER JOIN [input] ON [data].Name = [input].Name
set flag=true
where 
 [data] .key=(select max(key) from [data] t where  t.name=[data].name)
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490551
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Результат (Access 2002)
key Name flag
1 Маша Нет
5 Маша Да
3 Даша Да
4 Люба Да
Щас в 2000 попробую.
...
Рейтинг: 0 / 0
Подзапрос с группировкой не дает сделать Update
    #32490664
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG, огромное спавибо.
У меня в тестовых данных (input) Люба оказалась, поэтому и тест работал неправильно. У Вас все точно.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Подзапрос с группировкой не дает сделать Update
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]