powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможно ли обновление таблицы по записям входящим в запрос?
25 сообщений из 88, страница 1 из 4
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644105
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица, в которой есть поля Id (идентификатор записи), tn (табельный номер работника), data2 (дата увольнения), и activ (поле которое необходимо изменить).

Возможно ли обновить все записи таблицы таким образом, чтобы у каждого табельного номера, была найдена последняя дата увольнения и у записи с последней датой увольнения значение activ было выставлено на 1.

То есть должно получиться что-то вроде
ИЗ
idtndata2activ1101.02.199302104.03.201203104.06.199504204.01.199305206.07.19910
ПОЛУЧИТЬ
idtndata2activ1101.02.199302104.03.201213104.06.199504204.01.199315206.07.19910

Заранее спасибо.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644109
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно, но нарушение второй нормальной формы по-моему в данном случае не оправдано.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644111
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно EB, можно подзапросом.

Можно и "оконными функциями", наверное,
хотя это тоже, по сути, подзапросом.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644113
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovнарушение второй нормальной формы по-моему в данном случае не оправдано.+1

Именно как "дата (последнего?) увольнения" поле activ сомнительно.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644119
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамполе activ сомнительно.хранить актив клупо.

Наложить на таблицу с датами приема-увольнения вьюху, в которой применительно к каррент_дате (или еще какой другой дате) и будет выдаваться наружу актив-неактив.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644122
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, клупо. Групно клупо. :)
Но плодить такую вьюху ещё хуже.

А вот соответствующее поле в таблице самих сотрудников
(в той, где табельный номер) - вполне не возбраняется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644181
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Речь о нормальности базы вообще не идёт.
Дело в том, что я переделываю программу 80-х годов. Там была такая избыточность что даже поля Ф.И.О. для того чтобы выводится в окне связно, хранились по отдельности и отдельным полем целиком.

Вообщем то поле актив и ввожу только потому, что в базе работников, (3500 человек) некоторые личности повторяются (если увольнялся и приходил - 2 раза, если несколько раз увольнялся - несколько раз.) Причём при каждом увольнении менялся табельный номер. Я пол дня потратил чтобы найти хоть какое-то логическое оправдание этому, но увы. Вообщем, пожалуйста, помогите решить проблему с конкретным запросом. Я как бы понимаю как выбрать только интересующие записи, но не понимаю как данный селект вставить в запрос.

Спасибо всем кто откликнулся.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644191
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов РустамА вот соответствующее поле в таблице самих сотрудников
(в той, где табельный номер) - вполне не возбраняется.


Боюсь вы меня не правильно поняли. Данное поле необходимо не для того чтобы выяснить уволен ли человек на данный момент или нет, а для того, чтобы в дальнейшем вывести отдельными строками его ФИО и дата устройства - увольнения на работу.

Т.Е. итоговая таблица будет выглядеть как-то так...
ФИОДата принятия Дата увольненияИванов Иван Иванович01.01.2003 01.07.2004Иванов Иван Иванович01.04.2007 04.05.2013Степанов Степан Степанович03.07.200912.06.2010
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644198
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlДанное поле необходимо не для того чтобы выяснить уволен ли человек на данный момент или нет, а для того, чтобы в дальнейшем вывести отдельными строками его ФИО и дата устройства - увольнения на работу.Тогда и обновлять ничего не надо. Если у вас ФБ до 2.5 включительно, то используйте курсор , т.е. это будет PSQL. Если же ФБ 3.0, то можно через оконные функции, на чистом SQL.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644205
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблоид,

Можно поподробнее? Или хотя бы где почитать =\
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644219
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlИли хотя бы где почитать =\
Начни с раздела документации на оф.сайте. Language Reference и Language Reference Update
последовательно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644233
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Ман нашёл, не верен что успею прочитать и выполнить, но всё равно спасибо.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644242
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlне верен что успею прочитать и выполнить
"Лучше день потерять потом за пять минут долететь." (с)

MuxauJlя переделываю программу 80-х годов
С каких это пор рефакторинг выполняется на время?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644250
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Менялись программисты, каждый что-то пытался вносить в своё... В итоге есть таблицы общих сведений о работниках на 80+ полей, из которых какие-то повторяются, а какие-то использовались для одного отчёта.

С курсором вроде разобрался... Начал буксовать насчёт запроса... Завтра на свежую голову буду думать =)
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644252
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlНачал буксовать насчёт запроса...Не мешало бы версию ФБ озвучить...
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644253
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlМенялись программисты, каждый что-то пытался вносить в своё... В итоге есть
таблицы общих сведений о работниках на 80+ полей, из которых какие-то повторяются, а
какие-то использовались для одного отчёта.
И чо? Это, типа, офигенное обоснование для спешки?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644314
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJl> некоторые личности повторяются (если увольнялся и приходил -
MuxauJl> 2 раза, если несколько раз увольнялся - несколько раз.)
MuxauJl> Причём при каждом увольнении менялся табельный номер.

Странная практика. Я особо не интересовался кадровым учётом
и старым КЗОТом, но, как минимум, личное дело у сотрудника
одно и то же, а не каждый раз новое - соответственно, и запись
(и табельный номер тоже, видимо) в таблице сотрудников одна.
А в таблице периодов - интервалы приёма-увольнения.

Если уж переписываешь (а не "переделываешь") - делай
сразу по-человечески, включая исправление структур БД.

MuxauJl> Я как бы понимаю как выбрать только интересующие записи,
MuxauJl> но не понимаю как данный селект вставить в запрос.

update table ... where (select from sametable условия)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644316
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJl> Данное поле необходимо не для того чтобы выяснить
MuxauJl> уволен ли человек на данный момент или нет, а для того,
MuxauJl> чтобы в дальнейшем вывести отдельными строками его
MuxauJl> ФИО и дата устройства - увольнения на работу.


Для этого означенное поле activ вообще не нужно. :)
Либо PSQL-курсор (EB, ХП), либо подзапросы,
вытаскивающие min и max, либо оконные функции.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644486
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
Для этого означенное поле activ вообще не нужно. :)
Либо PSQL-курсор (EB, ХП), либо подзапросы,
вытаскивающие min и max, либо оконные функции.


Вытаскивал минимум и максимум. Но только суть в чём. Я хочу сделать так чтобы табельный номер не изменялся ( то есть что бы в дальнейшем дела не дублировались). Если я сделаю подзапросами, так как я себе это представляю, то он будет выводить только последнюю дату увольнения.

З.ы. Поясню на всякий случай, выводить все нельзя так как там еще перемещения из отделения в отделение, и отпуска и т.д.

Гаджимурадов Рустам update table ... where (select from sametable условия)

Если я правильно понял то что-то такое я пытался осуществить... Не мог разобраться в синтаксисе.

Dimitry Sibiryakov И чо? Это, типа, офигенное обоснование для спешки?..

Нет, офигенное обоснование для спешки в том, что отчёт по программе должен быть сдан через 4 дня. А я ещё с базой колупаюсь =)

Таблоид Не мешало бы версию ФБ озвучить...
Firebird 2.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644491
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlофигенное обоснование для спешки в том, что отчёт по программе должен быть
сдан через 4 дня. А я ещё с базой колупаюсь =)
Забей. Это не твои проблемы, а тех, кто нанимает неспециалистов на работу, которую они не
в состоянии выполнить.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644493
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

Да я как бэ практику прохожу.. неоплачиваемый труд и всё такое...

Просто я хотелось бы сделать хотя бы с намёком на человечность... Я иначе чем через актив это не представляю. И ума не хватает его заполнить. Вот такая беда.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644504
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot MuxauJl]Гаджимурадов Рустам...... Но только суть в чём. Я хочу сделать так чтобы табельный номер не изменялся ( то есть что бы в дальнейшем дела не дублировались). Если я сделаю подзапросами, так как я себе это представляю, то он будет выводить только последнюю дату увольнения.

З.ы. Поясню на всякий случай, выводить все нельзя так как там еще перемещения из отделения в отделение, и отпуска и т.д.
....

По поводу не изменения табельного номера.
Лучше с этим не связываться, ибо сама природа табельного номера подразумевает его изменение, хотя в википедии и написано
"...он присваивается однократно при поступлении на работу, никогда не изменяется...", однако это не совсем верно, ибо при перемещении из подразделения в подразделение на многих предприятиях меняют табельный номер. Более того вполне возможно что у человека в одном предприятии будут _одновременно_ два разных табельных номера. А уж про повторное использование табельного номера вообще не говорю, это сплошь и рядом. Так что советую сделать для человека (не для работника) уникальный номер (условно назовем его постоянный номер) и к нему уже привязывать работника.

зы. Про табельный номер, это не мои фантазии, это опыт многих лет работы.
Правда последние лет 5-ть я этим не занимаюсь, однако не думаю что что-то кардинально изменилось.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644505
MuxauJl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустамupdate table ... where (select from sametable условия)


Вообщем конкретнее о том на чём я застрял... Я сделал запрос:

Код: sql
1.
update perem set activ=1 where (select tn,max(cast(data2 as date)) from perem)



Выдаёт ошибку.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 1, column 78.

Подозреваю что дело во вложенном запросе.
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644506
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7m,
Ну конечно пост не Рустаму, а MuxauJl
не аккуратно вырезал
...
Рейтинг: 0 / 0
Возможно ли обновление таблицы по записям входящим в запрос?
    #38644507
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MuxauJlГаджимурадов Рустамupdate table ... where (select from sametable условия)


Вообщем конкретнее о том на чём я застрял... Я сделал запрос:

Код: sql
1.
update perem set activ=1 where (select tn,max(cast(data2 as date)) from perem)



Выдаёт ошибку.
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Unexpected end of command - line 1, column 78.

Подозреваю что дело во вложенном запросе.
where у тебя недописанное
...
Рейтинг: 0 / 0
25 сообщений из 88, страница 1 из 4
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможно ли обновление таблицы по записям входящим в запрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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