|
|
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
Малоопытен в foxpro. Помогите пожалуйста. Есть 2 базы. anal.dbf fakt.dbf есть у них общее поле schet нужно выбрать тех у кого anal.schet=fakt.schet и записать их в отдельную базу. Как это можно сделать. select 1 use anal.dbf select 2 use fakt.dbf select 3 use copy.dbf set filter to anal.schet=fakt.schet ? ? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 07:56 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
Select anal.* from anal,fakt where anal.schet=fakt.schet into table copy1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 08:18 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
СПАСИБО а КАК СДЕЛАТЬ ЧТОБЫ FOX НЕ ХАПАЛ ОДИНАКОВЫХ ЗАПИСЕЙ Т.Е В ANAL ЕСТЬ МНОГО ОДИНАКОВЫХ ЗАПИСЕЙ, А НУЖНО ВЫБРАТЬ ЛИШЬ ОДНУ ИЗ НИХ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 09:11 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
phonixСПАСИБО а КАК СДЕЛАТЬ ЧТОБЫ FOX НЕ ХАПАЛ ОДИНАКОВЫХ ЗАПИСЕЙ Т.Е В ANAL ЕСТЬ МНОГО ОДИНАКОВЫХ ЗАПИСЕЙ, А НУЖНО ВЫБРАТЬ ЛИШЬ ОДНУ ИЗ НИХ. Вообще-то это просто. Будет записано не select bla-bla-bla, a select distinct bla-bla-bla... Но лучше все-таки уточнить критерии отбора записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 10:31 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
ПРИМЕНИТЕЛЬНО К МОЕМУ ПРИМЕРУ Есть 2 базы. anal.dbf fakt.dbf есть у них общее поле schet нужно выбрать тех у кого anal.schet=fakt.schet и записать их в отдельную базу. Как это можно сделать. в БАЗЕ ANALIT ЕСТЬ МНОГО ЗАПИСЕЙ, ГДЕ НЕКОТОРЫЕ ДУБЛИРУЮТСЯ Так вот нужно, чтобы в новую базу записывались лишь одна, а ее дубликаты не записывались. коряво объяснил, но думаю суть ясна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 13:27 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
phonixПРИМЕНИТЕЛЬНО К МОЕМУ ПРИМЕРУ Есть 2 базы. anal.dbf fakt.dbf есть у них общее поле schet нужно выбрать тех у кого anal.schet=fakt.schet и записать их в отдельную базу. Как это можно сделать. в БАЗЕ ANALIT ЕСТЬ МНОГО ЗАПИСЕЙ, ГДЕ НЕКОТОРЫЕ ДУБЛИРУЮТСЯ Так вот нужно, чтобы в новую базу записывались лишь одна, а ее дубликаты не записывались. коряво объяснил, но думаю суть ясна. Уточняю про критерии отбора: Что значит дублируются? 1. Если дублируются абсолютно все поля и дуюликаты не являются удаленными записями, то это ошибка программы / проектирования базы данных... Ибо: ТАКОГО БЫТЬ НЕ ДОЛЖНО!!! За это надо убивать на месте... 2. Если "дублирующиеся" записи являются удаленными (при установке SET DELETED OFF и последующем select'е, к сожалению, признак удаления записи снимается), то надо в критерии отбора (выражение WHERE) поставить AND NOT DELETED(). 3. Дублируется несколько полей, остальные чем-то отличаются. Тогда надо добавить дополнительные критерии отбора... Можно, конечно, это победить включением ключевого слова DISTINCT сразу после слова SELECT select distinct anal.* from anal,fakt where anal.shet=fakt.schet into dbf copy1 Но лучше покопаться с условиями отбора / объединения записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:06 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
В МОЕМ СЛУЧАЕ 3 ВАРИАНТ. СПАСИБО DISTINCT ПОМОГ. А ЧТО ОН МОЖЕТ РАБОТАТЬ НЕКОРРЕКТНО? А МОГУ ЛИ Я СДЕЛАТЬ ВЫБОРКУ ПО 2-М ПОЛЯМ И КАК ЭТО БУДЕТ ВЫГЛЯДЕТЬ? НАПРИМЕР, Select DISTINCT anal.* from anal,fakt where anal.(schet+code)=fakt.(schet+code)table copy1 СПАСИБО. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:33 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
phonixВ МОЕМ СЛУЧАЕ 3 ВАРИАНТ. СПАСИБО DISTINCT ПОМОГ. А ЧТО ОН МОЖЕТ РАБОТАТЬ НЕКОРРЕКТНО? А МОГУ ЛИ Я СДЕЛАТЬ ВЫБОРКУ ПО 2-М ПОЛЯМ И КАК ЭТО БУДЕТ ВЫГЛЯДЕТЬ? НАПРИМЕР, Select DISTINCT anal.* from anal,fakt where anal.(schet+code)=fakt.(schet+code)table copy1 СПАСИБО. Вообще-то DISTINCT оставляет в результирующей таблице УНИКАЛЬНЫЕ ЗАПИСИ (т.е. записи, у которых комбинация значений (в порядке следования полей в результирующем наборе), например: (a+b+c+...+z) не повторяется в последующих записях результирующего набора). Насчет фильтрации по двум и более полям. Да, можешь... Только это делается немного не так (точка с запятой - признак продолжения команды Фокса на следующей строке): Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 14:52 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
Следующий вопрос, если позволите Нужно поле code обеих баз(т.е которые удовлетворяют условию anal.code=fakt.code ) перенумеровать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 15:54 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
Не просто пронумеровать, а чтобы поле code в anal соответствовало code в fakt. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2006, 15:56 |
|
||
|
fox 2.6
|
|||
|---|---|---|---|
|
#18+
phonixНе просто пронумеровать, а чтобы поле code в anal соответствовало code в fakt. Не понял вопроса... Если anal.code=fakt.code, так это и так означает, что поле code в anal соответствовало code в fakt. Либо конкретизируй вопрос... А еще лучше с примером: - Пример проблемной процедуры / команды - пример данных (что есть в исходном файле (ЗАПИСЕЙ 5-6), что отбирается сейчас (ЗАПИСЕЙ 2-3, частично покрывающие (являющиеся подмножеством) исходный набор записей) и что должно получиться на самом деле (ЗАПИСЕЙ 2-3, частично покрывающие (являющиеся подмножеством) исходный набор записей) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2006, 06:31 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33708851&tid=1591756]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
153ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 248ms |
| total: | 513ms |

| 0 / 0 |
