powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
25 сообщений из 76, страница 1 из 4
FoxPro и INSERT INTO
    #37119124
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как добавить в существующую таблицу записи
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1 
В данном случае создается таблица New_1 и туда записываются данные возвращаемые запросом мне нужно дописать в New_1
Код: plaintext
1.
INSERT into New_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from P5072300.DBF, New_disc.DBF Where New_disc.Pred=P5072300.Pred
ругается на синтекс FoxPro 2.6, не все конструкции SQL понимает?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119159
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorПодскажите как добавить в существующую таблицу записи
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1 
В данном случае создается таблица New_1 и туда записываются данные возвращаемые запросом мне нужно дописать в New_1
Код: plaintext
1.
INSERT into New_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from P5072300.DBF, New_disc.DBF Where New_disc.Pred=P5072300.Pred
ругается на синтекс FoxPro 2.6, не все конструкции SQL понимает?Угу. Там было очень ограниченное подмножество SQL. Объедините Ваши запросы через union all, без insert, разумеется.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119232
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И как будут добавляться записи. Что даст мне UNION
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119307
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorИ как будут добавляться записи.Точно так же, как ы первом запросе. Что даст мне UNIONВы не знаете, что такое union? Кратко это объединение в одном результате результатов двух и более запросов с одинаковой структурой.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119693
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это
Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5072300.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1
+ это

Код: plaintext
1.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\xxx.DBF, C:\FPW26\PLAN1\New_disc.DBF Where New_disc.Pred=P5072300.Pred into dbf New_1
Между ними UNION но ведь into dbf New_1 попросит перезаписать файл или...?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37119714
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
Вы может таки почитаете документацию-то? И фантазию немного попридЕржите?
Независимо от количества union и select вокруг них вся конструкция считается одним запросом. Со всеми вытекающими.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120627
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо
Код: plaintext
1.
2.
3.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5060101.DBF, G:\Temp\New_disc.DBF Where New_disc.Pred=P5060101.Pred 
UNION 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from C:\FPW26\PLAN1\P5100100.DBF, G:\Temp\New_disc.DBF Where New_disc.Pred=P5100100.Pred into dbf New_1 
Правда не хочет выполняться пока не расположишь все в одну строку.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120637
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для переноса используй точку с запятой
Код: plaintext
1.
2.
select ...;
from...;
union ...
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37120733
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Еще мы таким способом можем перезаписывать таблицу т.е. если мы перечислили в запросе 2 таблицы то из них и получим одну ту что после into стоит, а есть возможность именно добавлять записи в уже существующую таблицу. Или это из "оперы" APPEND....
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121433
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor... а есть возможность именно добавлять записи в уже существующую таблицу. Или это из "оперы" APPEND....
из оперы, только в этой опере еще есть
Код: plaintext
APPEND FROM ...
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121784
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот опять тупость
Код: plaintext
1.
2.
3.
4.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred1;
UNION; 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty2, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred2;
UNION; 
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_[SRC sql]
disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
UNION;
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty6, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred6;
UNION;
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty7, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred7;
into dbf Disc_1
[/src]Ругается при добавлении седьмого select
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred1 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty2, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred2 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty6, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred6 UNION select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty7, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred7 into dbf Disc_1
Error in line  210 : Compiled code for this line too long.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121814
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor,
откройте для себя понятие "алиас таблицы".
Код: plaintext
select Nd.PR, Nd.FAK, Nd.SPEC, Nd.KAF, Nd.BLOK, Nd.PRED, Nd.NAME, Nd.FAK_OLD, Nd.SPEC_OLD, Nd.KAF_OLD, Nd.PRED_OLD from &Puty1, E:\Temp\New_disc as Nd
Длина команды в старом фоксе до 2048 символов. Потому выкидывайте все ненужное и необязательное из команд. Или переходите к Append from.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121843
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите как переделать запрос с APPEND'ом т.к. ненужное из этого запроса мне убрать не получится. У меня 66 таблиц по которым ищется совпадения.
P.S. Не ругайтесь мне самому надоела моя тупость.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37121989
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122066
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbf
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122088
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_Fedor
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbfAppend from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122096
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey SizovChek_Fedor
Код: plaintext
1.
2.
select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty5, E:\Temp\New_disc.DBF Where New_disc.Pred=&TPred5;
APPEND FROM E:\temp\Disc_1
В чем ошибка пытаюсь добавить записи выбранные select в Disc_1.dbfAppend from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
Пройденный этап, удалял ; запрос заканчивает работу на select'e т.е. не вставляет записи в Disc_1.dbf
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122099
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
select "Рабочая область куда будем добавлять записи"
APPEND FROM "Таблица ИЗ которой будем брать записи для добавления"

PS: Посмотрите пример по приведенной ранее ссылке
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122138
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин ну я в общее... совсем запутался
Код: plaintext
1.
2.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
Этим указали таблицу куда добавлять записи
Код: plaintext
1.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
т.е. в моем случае это Disc_1.DBF он идентичен New_disc.dbf
Код: plaintext
1.
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
здесь говорим, что брать записи нужно из New_disc.dbf в том случае если они удовлетворяют условию New_disc.Pred=&TPred5 где
&TPred5=таблица5.Pred
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122168
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorБлин ну я в общее... совсем запутался
Код: plaintext
1.
2.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
Этим указали таблицу куда добавлять записиЭтим Вы ничего и ничему не указали. Ибо запрос (строка, начинающаяся со слова select) не имеет указания куда помещать результат запроса. И наконец запмните, что запрос на выборку (select) никогдане вставлял записи в уже имеющиеся таблицы.
Код: plaintext
1.
select Disc_1.PR, Disc_1.FAK, Disc_1.SPEC, Disc_1.KAF, Disc_1.BLOK, Disc_1.PRED, Disc_1.NAME, Disc_1.FAK_OLD, Disc_1.SPEC_OLD, Disc_1.KAF_OLD, Disc_1.PRED_OLD from E:\Temp\Disc_1.DBF 
т.е. в моем случае это Disc_1.DBF он идентичен New_disc.dbf
Код: plaintext
1.
2.
[/quot]Я уже писал про алиасы. [quot]
APPEND FROM E:\temp\New_disc.dbf for New_disc.Pred=&TPred5
здесь говорим, что брать записи нужно из New_disc.dbf в том случае если они удовлетворяют условию New_disc.Pred=&TPred5 где
&TPred5=таблица5.PredИ что такое таблица5? Она тут каким боком? И что фоксу сказано по поводу этой таблицы в деле отбора записей для совершенно другой таблицы?
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122218
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorSergey Sizovпропущено...
Append from, как могли бы убедитсься по предложенным примерам, есть отдельная команда, а не часть запроса. Точку с запятой долой.
Пройденный этап, удалял ; запрос заканчивает работу на select'e т.е. не вставляет записи в Disc_1.dbf
Рабочие области никто не отменял и FROM переводится "откуда" а не "куда"
В общем виде так:
Код: plaintext
1.
2.
3.
4.
select ... from ... into dbf ТаблицаСДаннымиДляДобавления
sele ТаблицаСДаннымиДляДобавления
use
sele ТаблицаКудаДобавлять
append from ТаблицаСДаннымиДляДобавления
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122267
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сам запутался и Вас запутал.
по поводу таблиц. В общем на понятном мне SQL-запросе не FoxPro
Код: plaintext
1.
insert into Disc_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=таблица1.Pred;
вот этот запрос работал бы в MSSQL.
т.е. мы берем таблицу New_disc ищем совпадения стаблица1 и вставляем в Disc_1.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122289
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TВ общем виде так:
sele ТаблицаСДаннымиДляДобавления
use
Совершенно ненужные команды, вводящие новичков в заблуждение.
Первая не нужна в силу автоматического переключения на результат запроса.
Вторая не нужна в силу возможности добавления из открытой таблицы.
Кстати, так как ТаблицаСДаннымиДляДобавления временная, то вместо ino dbf лучше использовать into cursor.
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122308
Chek_Fedor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как переделать мой запрос с insert into. Чувствую скоро двинусь с этим FoxPro (то длинные команды то еще что)
...
Рейтинг: 0 / 0
FoxPro и INSERT INTO
    #37122315
Sergey Sizov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chek_FedorСам запутался и Вас запутал.
по поводу таблиц. В общем на понятном мне SQL-запросе не FoxPro
Код: plaintext
1.
insert into Disc_1 select New_disc.PR, New_disc.FAK, New_disc.SPEC, New_disc.KAF, New_disc.BLOK, New_disc.PRED, New_disc.NAME, New_disc.FAK_OLD, New_disc.SPEC_OLD, New_disc.KAF_OLD, New_disc.PRED_OLD from &Puty1, E:\Temp\New_disc.DBF Where New_disc.Pred=таблица1.Pred;
вот этот запрос работал бы в MSSQL.
т.е. мы берем таблицу New_disc ищем совпадения стаблица1 и вставляем в Disc_1.Так вот Append from - это не sql. В нем нельзя написать
Код: plaintext
from &Puty1, E:\Temp\New_disc.DBF 
Эта команда добавляет данные только и исключительно из одной таблицы.
Если я правильно понял задачу, которую Вы таки и не огласили полностью, Вам надо собрать данные из нескольких одинаковых по структуре таблиц в одну? При этом собрать не все, а по какому-то условию?
...
Рейтинг: 0 / 0
25 сообщений из 76, страница 1 из 4
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / FoxPro и INSERT INTO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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