|
|
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Скажите (можно и код) какими опреаторами фокса (2.5) нужно пользоваться, чтобы из одной таблицы значения одних полей перенести в другую таблицу в другие поля. С фоксом не работал никогда (а вот щас понадобилось), отсюда и вопрос такой дурацкий. Справка в фоксе нормальная, но это тока знать надо какими командами пользоваться, а для того, кто первый рас- совершенно бесполезная ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 06:41:26 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Если тебе надо добавить в существующую таблицу, то необходимы следующие команды: - select <таблица1> - говорим системе, что работаем с таблицей № 1 - scan <условие> ... endscan - обеспечивает проход по требуемому набору записей в таблице 1 - insert into <таблица2> (<поле1>,...) values (<таблица1>.<поле2>,...) внутри цикла scan ... endscan Если нужная таблица еще не существует, то я бы посоветовал Select-SQL: select a.pole1 as pole3,a.pole2 as pole1,... ; from table1 a ; where <условие отбора записей> ; into table table2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 07:13:59 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Спасибо большое, буду работать в этом направлении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 07:40:13 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Если структура у таблиц одинаковая и поля следуют соответственно то можно ещё так select <tablica1> go top scan scatter to memvar select <tablica2> append blank gather from memvar select <tablica1> endscan или так select <tablica2> append from <tablica1> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2004, 11:25:02 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Имею 2 таблицы. нужно в одну таблицу добавить данные из другой, при условии, что в первой таких записей нет. Идентификация происходит по полю FIO. Ну тоесть нужно добавить из таблицы 1 в таблицу 2 все записи в которых значение поля FIO уникально, тоесть такого значения нет во второй таблице. Делаю так select 3 use tb.dbf index on tab tag tab select 1 append from tb FIELDS tab,zech,fio,datr,prof,daprim,dauv for ....... Помогите задать условие.. К примеру buk.fio<>tb.fio не подходит.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 06:23:03 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
pauleИмею 2 таблицы. нужно в одну таблицу добавить данные из другой, при условии, что в первой таких записей нет. Идентификация происходит по полю FIO. Ну тоесть нужно добавить из таблицы 1 в таблицу 2 все записи в которых значение поля FIO уникально, тоесть такого значения нет во второй таблице. Делаю так select 3 use tb.dbf index on tab tag tab select 1 append from tb FIELDS tab,zech,fio,datr,prof,daprim,dauv for ....... Помогите задать условие.. К примеру buk.fio<>tb.fio не подходит.. Я бы сделал так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 06:46:44 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Только - если в первой таблице записи ф.и.о. - не уникальны - все дубли и добавятся... Поэтому, либо - нужно добавить в SELECT группирование по ф.и.о. - select * from tab1; into cursor noviy; where tab1.fio not in (select fio from tab2); group by fio Либо - проиндексировать уникально: select noviy index on fio to temp compact unique да и вместо do while лучше scan использовать (а алиас в values можно и не указывать - и так берется текущий): Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2005, 11:46:38 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Hi Crispy! В таком запросе группировка не может применяться - получится что поле FIO мы имеем определённое, а вот остальные поля - абы что :( Т.е. тогда надо для оставшихся полей применять агрегатные функции - MAX или MIN например... или СНАЧАЛА избавиться от дублей, а потом выбирать "отсутствующие". > да и вместо do while лучше scan использовать Лучше просто APPEND FROM (DBF("noviy")) Или в новых версиях вообще красиво INSERT INTO tb (список полей, ...) SELECT <далее идёт запрос> Кстати говоря, перед ENDSCAN совсем не нужно SELECT делать - он сам выберет тот курсор, который был активным в момент начала SCAN (т.е. по которому SCAN и ходит). Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 01:30:51 |
|
||
|
Перенос
|
|||
|---|---|---|---|
|
#18+
Hi, Igor Korolyov ! Да. В общем-то все верно, конечно. Но в данном случае, если я не ошибаюсь - речь могла бы идти только о полностью идентичных записях (1 ф.и.о. - 1 человек со всеми своими данными - если только дубли вообще там возможны). А для таких записей можно было бы группировать и просто по ф.и.о... Я, кстати, просто хотел чуть дополнить то, что предложил Сатанислав С. (не моя ошибка - имя так и было написано! :) А сам бы я наверно в этом случае сделал так - выбрал через SELECT-SQL нужное, а потом APPEND-ом добавил в другую таблицу. Так меньше проблем, если у обеих исходных таблиц разные структуры. А про новые версии... У автора - фокс 2.5 ... И еще: Igor KorolyovКстати говоря, перед ENDSCAN совсем не нужно SELECT делать - он сам выберет тот курсор, который был активным в момент начала SCAN (т.е. по которому SCAN и ходит). В FPD 2.6 я сталкивался с такой непонятной вещью - (иногда по-крайней мере) если не ставить явно указание на основной алиас - после команды INSERT-SQL (и именно нее) - может не происходить возврата на него! Я так и не понял, почему и когда это происходит, поэтому и оставил там SELECT на всякий случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2005, 10:55:21 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=32670415&tid=1593863]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 433ms |

| 0 / 0 |
