powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перенос данных из GTT в постоянную таблицу
17 сообщений из 17, страница 1 из 1
Перенос данных из GTT в постоянную таблицу
    #38933678
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть GTT, данные в которой вычисляются при помощи ХП. После заполнения этой таблицы, надо перенести данные в обычную таблицу. Например, GTT состоит из полей NAME и QUANTITY. Обычная таблица состоит из полей ID, ID_DOC, NAME и QUANTITY. То есть надо удалить из второй таблицы все строки с NAME, которых нет в первой, добавить отсутствующие и обновить существующие.
Вопрос форумчанам: при помощи каких конструкций вы решаете подобную задачу? Или решили бы?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933687
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Версия какая?

Delete и update or insert
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933695
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxЕсть GTT, данные в которой вычисляются при помощи ХП. После заполнения этой таблицы, надо перенести данные в обычную таблицу. Например, GTT состоит из полей NAME и QUANTITY. Обычная таблица состоит из полей ID, ID_DOC, NAME и QUANTITY. То есть надо удалить из второй таблицы все строки с NAME, которых нет в первой, добавить отсутствующие и обновить существующие.
Вопрос форумчанам: при помощи каких конструкций вы решаете подобную задачу? Или решили бы?

что за страсть именовать поля резервированными выражениями - типа NAME ?! скудный словарный запас?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933703
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskчто за страсть именовать поля резервированными выражениями - типа NAME ?! скудный словарный запас?
С каких это пор NAME стало зарезервированным словом? И зачем надо называть поле как-то иначе, если в нем содержится просто наименование?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933704
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskчто за страсть именовать поля резервированными выражениями - типа NAME ?!
Когда это слово стало зарезервированным?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933706
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadmanВерсия какая?
2.5.

wadmanDelete и update or insert
Почему не MERGE?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933708
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxПочему не MERGE?
А разница есть?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933709
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxПочему не MERGE?
А смысл мергать после полного удаления записей из целевой таблицы?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933712
Фотография CyberMax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например, вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
    MERGE INTO DOCTABLE D
        USING (SELECT NAME, AMOUNT FROM TMPTABLE) T
        ON (D.ID_DOC = :ID_DOC)
            AND (D.NAME = T.NAME)
        WHEN MATCHED THEN
            UPDATE
            SET
                AMOUNT = T.AMOUNT
            WHEN NOT MATCHED THEN
                INSERT
                    (ID, ID_DOC, NAME, AMOUNT)
                VALUES
                    (NEXT VALUE FOR SEQ_DOCTABLE_ID, :ID_DOC, T.NAME, T.AMOUNT);



А как обновление делается UPDATE OR INSERT?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933722
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxА как обновление делается UPDATE OR INSERT?
Стормозил, я так делал в цикле, то есть это касается только одной таблицы и перечисляемых значений.

http://firebirdsql.su/doku.php?id=update_or_insert
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933742
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxMaratIskчто за страсть именовать поля резервированными выражениями - типа NAME ?! скудный словарный запас?
С каких это пор NAME стало зарезервированным словом? И зачем надо называть поле как-то иначе, если в нем содержится просто наименование?

когда наберешься опыта - будешь делать как я - использовать префикс к имени поля - типа DOC_NAME
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933756
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskкогда наберешься опыта - будешь делать как я - использовать префикс к имени поля - типа DOC_NAMEА потом будет очередной виток покорения ДАО - использовать алиасы в запросе. DOC.DOC_NAME и вдруг оказывается, что DOC.NAME тоже ничего так, вполне осмысленно.
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933766
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxнадо удалить из второй таблицы все строки с NAME, которых нет в первой,
добавить отсутствующие и обновить существующие.
Добавь в первую таблицу недостающие поля, а потом
1) MERGE из второй таблицы в первую для их заполнения
2) DELETE всего из второй таблицы
3) INSERT...SELECT первой таблицы во вторую

В конечном итоге это может выйти оптимальнее чем портянка кода на синхронизацию таблиц,
поскольку новые данные красиво зальются на новые страницы, а не будут тесниться и
фрагментироваться на старых.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933853
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskCyberMaxпропущено...

С каких это пор NAME стало зарезервированным словом? И зачем надо называть поле как-то иначе, если в нем содержится просто наименование?

когда наберешься опыта - будешь делать как я - использовать префикс к имени поля - типа DOC_NAME

А в Борланде вообще лохи были - надо было называть свойства не Name, а Label_Name, Button_Name,
не Left, а Label_Left, Button_Left и т.д., глядишь, и не было-бы столько программистов.
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38933957
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zeon11MaratIskпропущено...


когда наберешься опыта - будешь делать как я - использовать префикс к имени поля - типа DOC_NAME

А в Борланде вообще лохи были - надо было называть свойства не Name, а Label_Name, Button_Name,
не Left, а Label_Left, Button_Left и т.д., глядишь, и не было-бы столько программистов.

а к базам данных это каким боком??? или для тебя бд в формочках дельфи?
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38934046
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskzeon11пропущено...


А в Борланде вообще лохи были - надо было называть свойства не Name, а Label_Name, Button_Name,
не Left, а Label_Left, Button_Left и т.д., глядишь, и не было-бы столько программистов.

а к базам данных это каким боком??? или для тебя бд в формочках дельфи?

А это к умению абстрагироваться от предметной области. Если не нарушаешь правила дорожного движения при езде на велосипеде, то и при езде на автомобиле их нарушать не будешь.
...
Рейтинг: 0 / 0
Перенос данных из GTT в постоянную таблицу
    #38934049
zeon11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CyberMaxЕсть GTT, данные в которой вычисляются при помощи ХП. После заполнения этой таблицы, надо перенести данные в обычную таблицу. Например, GTT состоит из полей NAME и QUANTITY. Обычная таблица состоит из полей ID, ID_DOC, NAME и QUANTITY. То есть надо удалить из второй таблицы все строки с NAME , которых нет в первой, добавить отсутствующие и обновить существующие .
Вопрос форумчанам: при помощи каких конструкций вы решаете подобную задачу? Или решили бы?

Из трёх действий (удалить, добавить, обновить) надо оставить только два, т.к. судя по постановке, удалить и обновить логически конфликтуют друг с другом.
Скорее всего тогда останется только два действия:
1. Удаляем из второй таблицы всё, что есть в первой.
2. Вставляем всё из первой таблицы (GTT) во вторую.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Перенос данных из GTT в постоянную таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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