Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
1

Несколько апдейтов в одном запросе

07.08.2013, 21:06. Показов 2556. Ответов 6
Метки нет (Все метки)

Добрый,
Подскажите пожалуйста,как реализовать?
имеется база mdb,в ней таблица, в которой 6 дат,некоторые данные (даты), были не правильно введены пользователем, перешло это хозяйство на меня. К примеру введены даты 01.01.187,01.01.200, 04.05.167 итд. Догадываться не хочу,что имелось ввиду, а просто взять и все даты,которые меньше например 01.01.1900 проапдейтить на 01.01.1900 или 01.01.2222, или вообще убрать.
так вот,если апдейт для одного поля то всё ок
SQL
1
UPDATE cl SET DATE=#01.01.2222# WHERE date<#01.01.1900#
. Хочу сделать чтобы при пробеге через базу менялись . Т.е. апдейт для всех полей


думал сделать,что типа:
SQL
1
2
3
4
5
6
7
8
9
IF (SELECT DATE FROM cl)<#01.01.1900#
BEGIN
UPDATE ..
END
ELSE
IF (SELECT date_end FROM cl)<#01.01.1900#
BEGIN 
UPDATE для date_end
итд
Так конечно не катит
Как быть?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.08.2013, 21:06
Ответы с готовыми решениями:

Несколько параметров в одном запросе
Добрый день! Хотелось бы упростить поиск информации с несколькими параметрами, чтобы приглашение на...

Несколько COUNT в одном запросе
Здравствуйте уважаемые форумчане! Как посчитать в одном запросе несколько COUNT? Пробовал делать...

Несколько выборок в одном запросе - возможно ли?
Добрый день! Есть несколько однотипных запросов по разным параметрам. SELECT...

Как поместить несколько запросов в одном запросе MS Access?
У меня есть сложные запросы, и чтобы они быстрее работали, нужно создавать промежуточные таблицы. ...

6
8128 / 5035 / 550
Регистрация: 27.03.2013
Сообщений: 18,002
07.08.2013, 21:12 2
Я не спец по подобным заморочкам, но может нужно сделать выборку, если формат даты не соответствует нужному и все, что проявилось к ногтю
0
Эксперт MS Access
26726 / 14405 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.08.2013, 21:24 3
Эти неправильные даты надо сделать пустыми
SQL
1
UPDATE cl SET [DATE]=NULL WHERE [DATE]<#12/31/1899#
0
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
07.08.2013, 21:35  [ТС] 4
Цитата Сообщение от kmv-puh Посмотреть сообщение
Я не спец по подобным заморочкам, но может нужно сделать выборку, если формат даты не соответствует нужному и все, что проявилось к ногтю
Можно конечно, просто база mdb исходные данные,которые с помощью внешнего приложения(написанного на с), импортируются в ms sql, всё это в автомате,более 60000 записей. Соответственно если встречается некорректная запись,программа вылетает.поэтому хочу сразу исправить то что не нужно

Добавлено через 4 минуты
Цитата Сообщение от mobile Посмотреть сообщение
UPDATE cl SET [DATE]=NULL WHERE [DATE]<#12/31/1899#
хорошо, не проблема, для одного поля.
можно ли сделать в одном запросе,чтобы очищалось всё?либо то что я выше привел или как то так?
update cl
set d1 =
set d2=
set d3 =
where условие.

Конечно если так делаю, то если выполняется одно из условий,то все даты становяться null, мне это не нужно., нужно там где они меньше 01/01/1900
0
Эксперт MS Access
26726 / 14405 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.08.2013, 21:42 5
T-SQL
1
2
3
4
5
UPDATE cl 
SET [d1]=iif([d1]<#12/31/1899#, NULL, [d1]), 
    [d2]=iif([d2]<#12/31/1899#, NULL, [d2]),  
    .......................................
    [dN]=iif([dN]<#12/31/1899#, NULL, [dN])
1
1 / 1 / 0
Регистрация: 07.02.2010
Сообщений: 129
07.08.2013, 21:57  [ТС] 6
Цитата Сообщение от mobile Посмотреть сообщение
T-SQL
1
2
3
4
5
UPDATE cl 
SET [d1]=iif([d1]<#12/31/1899#, NULL, [d1]), 
    [d2]=iif([d2]<#12/31/1899#, NULL, [d2]),  
    .......................................
    [dN]=iif([dN]<#12/31/1899#, NULL, [dN])
Ok, не разу не сталкивался с iif, попробую, завершаем же в любом случае where ?
т.е.
update cl
set [d1]=iif([d1]<#12.31.1899#,null,[d1]),
...
d[5]=iif([d5]<#12.31.1899#,null,[d5])
update (d5<#12.31.1989#) or ...or (d5<#12.31.1899#)
0
Эксперт MS Access
26726 / 14405 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
07.08.2013, 22:01 7
Нет, при таком подходе Where не должно использоваться. Да и не нужно. Ииф и сам справится.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2013, 22:01

Несколько IN () в одном запросе
Можно ли использовать несколько IN () в одном запросе, и как правильно это делать? Можно в in ()...

Несколько COUNT в одном запросе
Добрый день, в мускуле не селён -&gt; прошу вашей помощи, столкнулся сегодня вот с такой задачкой......

Несколько COUNT в одном запросе
Вечер добрый! В общем у меня проблема выбора количества строк из 7 таблиц. На каждую выборку...

Несколько Count в одном запросе
Подскажите как сделать запрос с нескольких таблиц но с например двумя операциями Count. Вот к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru