Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.10.2012, 18:51   #1
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию Запрос update

Задача такая: есть две таблицы table1 и table2 связанные по полям id1 и id2 (table1.id1->table2.id1 и table1.id2->table2.id2) связь один ко многим. Нужно выбирать из table2 максимальную дату для каждой пары id1 и id2, хранящуюся в поле date и заносить её в поле datemax в таблице table1 c этими id1 и id2
В голову приходил запрос вроде:
update table1 set datemax=(select max(table2.date) from table2 where table2.id1=table1.id1 and table2.id2=table1.id2) where table2.id1=table1.id1 and table2.id2=table1.id2
Знаю, что запрос не правильный, но надеюсь достаточно понятно описал суть проблемы
Ditrovich вне форума Ответить с цитированием
Старый 18.10.2012, 18:51   #2
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Помогите пожалуйста
Ditrovich вне форума Ответить с цитированием
Старый 18.10.2012, 18:58   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Можно сказать почти правильный, только WHERE не при делах. COALESCE на тот случай, если в Table2 нет ни одной подходящей записи, иначе NULL запишется. Можно без него, но тогда во WHERE EXISTS(запрос на проверку наличия подходящих записей в Table2)
Код:
update table1 
  set datemax=СOALESCE((select max(table2.date) from table2 where table2.id1=table1.id1 and table2.id2=table1.id2),table1.datemax)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 18.10.2012 в 19:01.
Аватар вне форума Ответить с цитированием
Старый 19.10.2012, 13:42   #4
Ditrovich
 
Регистрация: 04.09.2012
Сообщений: 9
По умолчанию

Спасибо, за помощь, с СOALESCE не получилось, т.к делфи с ней работать не умеет по-видимому (или я не умею ). Работает так как нужно с запросом
update table1
set datemax=(select max(table2.date) from table2 where table2.id1=table1.id1 and table2.id2=table1.id2)
Тема закрыта
Ditrovich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
SQL запрос UPDATE averkiev Visual C++ 0 26.07.2012 16:26
Запрос на обновление(UPDATE) Alex Jordan БД в Delphi 4 29.05.2011 12:22
Запрос с update zolomar Microsoft Office Access 3 25.01.2011 22:40
Переменная и запрос Update Виталий Желтяков PHP 2 21.06.2010 07:12
запрос update из C# Maxim90 Помощь студентам 0 09.04.2010 20:06