powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие для UPDATE
17 сообщений из 17, страница 1 из 1
Условие для UPDATE
    #40131149
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем утра, товарищи)
Прошу помочь в таком вопросе, как условие для update. У меня есть таблица _tab - табель из 1С, ключевыми полями являются поля n_kdk - табельный номер и dd - дата, так же есть второстепенные поля, как cf - часы фактические, cu - часы сверхурочно, kk36 - категория, trud - дополнительный часы фактические. Каждый раз для данной таблицы из 1С выгружают файл dbf с часами и заливают этот файл в таблицу. На что дальше и возникла небольшая сложность. Делаем update _tab, но необходимо, чтобы обновлялись все столбцы этой таблицы, кроме столбца trud (его занесенные данные остаются не изменными при update). Соответственно данный столбец может быть как пустой, так и со значениями
Например:
Начальные значения до загрузки файла dbf
Код: plaintext
1.
2.
3.
| cf |  cu |  trud |
-- -- -- -- -- -- --
| 8  |  0  |    8  |
Конечное значение после загрузки файла dbf
Код: plaintext
1.
2.
3.
| cf   |  cu |  trud |
-- -- -- -- -- -- -- -
| 12   |  0  |    8  |

Пробовал так:
Код: plsql
1.
2.
3.
4.
update _tab 
set _tab.dd = @dd, _tab.n_kdk = @n_kdk, _tab.fam = @fam, _tab.nam = @nam, _tab.otch = @otch
          , _tab.kk36 = @kk36, _tab.cf = @cf,  _tab.cu = @cu, _tab.fio_d = @fio_d, _tab.date_d = @date_d
where _tab.dd between @dn and @dk   and _tab.trud = (select top 1  _tab.trud from _tab where _tab.dd between @dn and @dk  and _tab.trud is not null or _tab.trud = 0)


и так
Код: plsql
1.
where _tab.dd between @dn and @dk  and (_tab.trud is null or _tab.trud is not null)


в общем какие варианты знал и нашарил в интернете, те и пробовал, но результат всегда один и тот же, либо обновляется вся таблица _tab и значения столбеца trud затираются, либо значения столбца trud остаются не измененными, но строка, где значение trud заполнена не обновляется
Помогите пожалуйста, как в условии это правильно написать?
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131151
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
Доброго всем утра, товарищи)
Прошу помочь в таком вопросе, как условие для update. У меня есть таблица _tab - табель из 1С, ключевыми полями являются поля n_kdk - табельный номер и dd - дата,
так же есть второстепенные поля, как cf - часы фактические, cu - часы сверхурочно, kk36 - категория, trud - дополнительный часы фактические. Каждый раз для данной таблицы из 1С выгружают файл dbf с часами и заливают этот файл в таблицу. На что дальше и возникла небольшая сложность. Делаем update _tab, но необходимо, чтобы обновлялись все столбцы этой таблицы, кроме столбца trud (его занесенные данные остаются не изменными при update). Соответственно данный столбец может быть как пустой, так и со значениями
Например:
Начальные значения до загрузки файла dbf
Код: plaintext
1.
2.
3.
| cf |  cu |  trud |
-- -- -- -- -- -- --
| 8  |  0  |    8  |
Конечное значение после загрузки файла dbf
Код: plaintext
1.
2.
3.
| cf   |  cu |  trud |
-- -- -- -- -- -- -- -
| 12   |  0  |    8  |

Пробовал так:
Код: plsql
1.
2.
3.
4.
update _tab 
set _tab.dd = @dd, _tab.n_kdk = @n_kdk, _tab.fam = @fam, _tab.nam = @nam, _tab.otch = @otch
          , _tab.kk36 = @kk36, _tab.cf = @cf,  _tab.cu = @cu, _tab.fio_d = @fio_d, _tab.date_d = @date_d
where _tab.dd between @dn and @dk   and _tab.trud = (select top 1  _tab.trud from _tab where _tab.dd between @dn and @dk  and _tab.trud is not null or _tab.trud = 0)


и так
Код: plsql
1.
where _tab.dd between @dn and @dk  and (_tab.trud is null or _tab.trud is not null)


в общем какие варианты знал и нашарил в интернете, те и пробовал, но результат всегда один и тот же, либо обновляется вся таблица _tab и значения столбеца trud затираются, либо значения столбца trud остаются не измененными, но строка, где значение trud заполнена не обновляется
Помогите пожалуйста, как в условии это правильно написать?


Да... дожили. И откуда они такие берутся?

1.
>> ключевыми полями являются поля n_kdk - табельный номер и dd - дата

Так какого хрена?
Код: sql
1.
2.
update _tab 
set _tab.dd = @dd, _tab.n_kdk = @n_kdk


У вас три класса церковно-приходской школы не окончено?

2. В _tab надо только
а) ОБНОВИТЬ существующие записи
или
б) ДОБАВИТЬ новые,
или
с) ОБНОВИТЬ существующие записи И ДОБАВИТЬ новые
?
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131152
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во-первых, я скинул только кусок, так как из файла мы получаем и новые данные! tab в файл загрузки не входит
не будем показывать пальцем кто и что заканчивал, ок? я вроде нормально прошу помочь разобраться
для _tab надо:
а) ОБНОВИТЬ существующие записи
И
б) ДОБАВИТЬ новые,
И
с) ОБНОВИТЬ существующие записи И ДОБАВИТЬ новые
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131156
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
во-первых, я скинул только кусок, так как из файла мы получаем и новые данные! tab в файл загрузки не входит
не будем показывать пальцем кто и что заканчивал, ок? я вроде нормально прошу помочь разобраться
для _tab надо:
а) ОБНОВИТЬ существующие записи
И
б) ДОБАВИТЬ новые,
И
с) ОБНОВИТЬ существующие записи И ДОБАВИТЬ новые


1. "Нормальные" не обновляют ключевые поля. Им это в начальной школе вдолбили.
2. Вы ужо выберите что-то одно. А то есть сильное подозрение, что заказчик не въезжает в собственные хотелки.

ЗЫ. DDL табличек и ЧЕСТНЫЙ фрагмент данных из обеих украсит вашу слезницу.
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131158
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
слушай, чел, харе) за*л про "нормальных", заладил как телка
я вроде уже написал, что выгрузку делают из файла, а значит данные могут только обновить или же могут добавить новые, а могут и добавить новые записи и обновить параллельно старые!!! не может быть чего-то одного и какой именно из этих вариантов будут делать я в душе не чаю
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131159
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,
если тебя это успокоит, то это не ключевые поля n_kdk и dd
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131160
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
слушай, чел, харе) за*л про "нормальных", заладил как телка
я вроде уже написал, что выгрузку делают из файла, а значит данные могут только обновить или же могут добавить новые, а могут и добавить новые записи и обновить параллельно старые!!! не может быть чего-то одного и какой именно из этих вариантов будут делать я в душе не чаю


Запомни,
1) тебе здесь никто ничем не обязан.
2) Это тебе надо.
3) Если тебя спрашивают и ты хочешь получить результат - отвечай по делу, а не бухти.
4) Иначе придет дядя модер и всех обидит.
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131161
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
aleks222,
если тебя это успокоит, то это не ключевые поля n_kdk и dd


Это только хуже. Это означает, что

1. ты путаешься в показаниях.
Raze
ключевыми полями являются поля n_kdk - табельный номер и dd - дата, так же есть

2. миссия невыполнима.
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131162
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222, бухтеть ты тут начал, можно было просто корректно поправить, а не начинать все вот это вот, что ты начал писать скрытым подтекстом
я в курсе что это надо мне, но тут вроде много людей которые шарят лучше меня и тебя тем более, поэтому не стоит разбрасываться агрессиями и если уж не можешь что-то нормальное подсказать как выстроить, тогда наверное и писать не столо
касательно результата, уже тоже озвучено что мне нужно и что я хочу получить, если вдруг не заметил, то можешь прочитать еще раз, это не зазорно

Уважаемый, модератор, прошу не ругать нас с этим товарищем, видимо друг друга просто не поняли
Уважаемые, пользователи данного фарума, если кто может помочь с постановкой условия update, подскажите как правильно это можно сделать
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131163
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
with t as ( select * from _tab )
    , x as  ( select * from [ выгружают файл dbf с часами и заливают этот файл в таблицу] )
  merge t using x on t.dd = x.dd, t.n_kdk = x.n_kdk -- ключевые поля - вещь ОБЯЗАТЕЛЬНАЯ, ты уж определись...
    when not matched then insert(dd, n_kdk, ...) values(dd, n_kdk, ...)
    when matched then update set fam = x.fam, ... -- dd, n_kdk - НИ-НИ!!!
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131164
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,
да, не так написал этот момент, согласен, корректировка внесена? внесена
еще проблемы?
"миссия не выполнима" ага, держи в курсе, чел
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131165
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
aleks222,
да, не так написал этот момент, согласен, корректировка внесена? внесена
еще проблемы?
"миссия не выполнима" ага, держи в курсе, чел

Извини дарагой, с тобой неинтересно. Уровень ниже плинтуса.
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131166
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,
ну ок, прям вообще в кратце, если уж так интересно

ключевым полем таблицы _tab является ID, но это ключевое поле не постоянное, оно каждый раз меняется когда загружается файл
Пример:
Первая выгрузка:
id - 123456 n_kdk - 3656 dd - 2022.01.02
Вторая выгрузка:
id - 654321 n_kdk - 3656 dd - 2022.01.02
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131167
Raze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222,
да пожалуйста, гуляй
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131202
Wlr-l
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Молодежь пошла

1) неграмотная
2) агрессивная.
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131237
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Raze
слушай, чел, харе) за*л про "нормальных", заладил как телка
я вроде уже написал, что выгрузку делают из файла, а значит данные могут только обновить или же могут добавить новые, а могут и добавить новые записи и обновить параллельно старые!!! не может быть чего-то одного и какой именно из этих вариантов будут делать я в душе не чаю


"чел" "в кратце" ответил так
...
Рейтинг: 0 / 0
Условие для UPDATE
    #40131278
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как только увидел в WHERE SELECT TOP(1) без ORDER BY, всё стало ясно.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Условие для UPDATE
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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