Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
1
RAD XE3+

Снова Update не выходит

02.07.2018, 09:40. Показов 1184. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго дня, господа. Задачка вот такая:
есть две таблицы:
1. Div - подразделения (структура id, N_DIV (номер подразделения, в том числе и подчиненного), HeadNum (номер головного подразделения NUll, если подразделение головное))
2. Staff - список человечков (структура Id, N_Div (номер подразделения), ID_DIV)
Staff.Id_Div=Null, так как таблица загружается извне.
Можно ли одним запросом сделать update таблицы Staff и выставить Staff.ID_Div= id головного подразделения из таблицы DIV (HeadNum is null)? Бьюсь, но пока что не получается сделать запрос.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.07.2018, 09:40
Ответы с готовыми решениями:

Снова вложенный Select не выходит
И снова здравствуйте. Имеются 2 таблички Divisions - список подразделений и Staff - персонал. Не...

Update не выходит
Здравствуйте уважаемые форумчане! Помогите пожалуйста . Запрос из кода php на обновление ...

Не выходит использовать функцию UPDATE
Всем здравствуйте, вот часть кода, которая как вы видете, выводит инфу из бд. Все работает как часы...

Зацикливание действий: программа выходит в главное меню и снова заходит в выбранный метод записи.
Всем привет! Ребят, подскажите мне, что я написал не так в программе. При запуске программы Я...

23
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
15.01.2019, 10:58 21
Author24 — интернет-сервис помощи студентам
брр
что это за выражение вообще?
копирование должно выглядеть как то очень примерно так
SQL
1
2
3
4
INSERT INTO YOUR_TABLE (a,b,c,d,e,HISTORY) 
SELECT t.a,t.b,t.c,t.d,t.e, TRUE -- <==== 
FROM YOUR_TABLE T
WHERE t.ID=:OLD_ID)
и у новой записи должен быть новый ID
потом просто у старой ставим HISTORY=FALSE
SQL
1
UPDATE YOUR_TABLE SET history=FALSE WHERE id=:OLD_ID
что еще требуется?

Добавлено через 5 минут
только я вроде перепутал TRUE и FALSE но общий смысл ясен
0
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
15.01.2019, 11:08  [ТС] 22
krapotkin, с копированием все нормально происходит. Запись дублируется и у старой статус history меняется на true. И дальше работа программы идет уже с новой записью (кроме отчетов за прошлые периоды). Id естественно новый. Разобрался я с запросом. Добавил условие и заработало.
SQL
1
2
3
4
5
UPDATE PProgress SET PProgress.IDDIV=(SELECT COALESCE(d2.id,d1.id) 
            FROM DIV d1 LEFT JOIN DIV d2 ON (d2.history='false' AND d2.NDIV=d1.HEADNUM ) 
            WHERE d1.NDiv=PProgress.NDIV AND d1.history='false') 
            WHERE PProgress.iddiv IS NULL
            AND PProgress.idfil=2
0
5786 / 4528 / 1431
Регистрация: 14.04.2014
Сообщений: 20,157
Записей в блоге: 20
15.01.2019, 11:12 23
а зачем столько джойнов-то с условиями?
заранее неизвестно какую запись копировать надо??
0
222 / 66 / 33
Регистрация: 23.05.2014
Сообщений: 715
15.01.2019, 11:58  [ТС] 24
Это запрос на обновление записей в другой таблице уже после копирования и внесения изменений. Поле PProgress.IDDIV ссылается на таблицу Div.ID, в которой и происходят изменения. Поэтому после внесения изменений надо заменить PProgress.IDDIV на новый Div.ID. И в PProgress мне заранее неизвестно кого на что менять.
0
15.01.2019, 11:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.01.2019, 11:58
Помогаю со студенческими работами здесь

Снова хром, снова сапопроизвольно открывается, снова bkrfdf.xyz и казино
Здравствуйте! Собственно, проблема уже не новая, хотя, как показывают сообщения форума, за...

Как сделать чтобы таймер дойдя до 0 стартовал снова и снова?
Здравствуйте :) Как сделать чтобы таймер дойдя до 0 стартовал снова и снова? TimerSec = 59;...

HP 625 снова и снова перезагружается в безопасный не заходит
Ребята помогите , проблема вот какая врубаю я ноут он доходит до заставки майкрософта и снова...

DataGrid update ПРОБЛЕМА: Key column information is insufficient or incorect. Too many rows were affected by update
Привет всем ! В Вижуал Басик6 на форме имею ДатаГрид с информацией из Аксцессс 2000. Соединение...


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

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru