powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / fox 2.6
11 сообщений из 11, страница 1 из 1
fox 2.6
    #33708747
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Малоопытен в 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
?
?

Спасибо
...
Рейтинг: 0 / 0
fox 2.6
    #33708773
Stas from Perm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select anal.* from anal,fakt where anal.schet=fakt.schet into table copy1
...
Рейтинг: 0 / 0
fox 2.6
    #33708851
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СПАСИБО
а КАК СДЕЛАТЬ ЧТОБЫ FOX НЕ ХАПАЛ ОДИНАКОВЫХ ЗАПИСЕЙ
Т.Е В ANAL ЕСТЬ МНОГО ОДИНАКОВЫХ ЗАПИСЕЙ, А НУЖНО ВЫБРАТЬ ЛИШЬ ОДНУ ИЗ НИХ.
...
Рейтинг: 0 / 0
fox 2.6
    #33709124
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phonixСПАСИБО
а КАК СДЕЛАТЬ ЧТОБЫ FOX НЕ ХАПАЛ ОДИНАКОВЫХ ЗАПИСЕЙ
Т.Е В ANAL ЕСТЬ МНОГО ОДИНАКОВЫХ ЗАПИСЕЙ, А НУЖНО ВЫБРАТЬ ЛИШЬ ОДНУ ИЗ НИХ.
Вообще-то это просто. Будет записано не select bla-bla-bla, a select distinct bla-bla-bla... Но лучше все-таки уточнить критерии отбора записей...
...
Рейтинг: 0 / 0
fox 2.6
    #33710066
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПРИМЕНИТЕЛЬНО К МОЕМУ ПРИМЕРУ
Есть 2 базы.
anal.dbf
fakt.dbf
есть у них общее поле schet
нужно выбрать тех у кого anal.schet=fakt.schet
и записать их в отдельную базу.
Как это можно сделать.

в БАЗЕ ANALIT ЕСТЬ МНОГО ЗАПИСЕЙ, ГДЕ НЕКОТОРЫЕ ДУБЛИРУЮТСЯ
Так вот нужно, чтобы в новую базу записывались лишь одна, а ее дубликаты не записывались.
коряво объяснил, но думаю суть ясна.
...
Рейтинг: 0 / 0
fox 2.6
    #33710244
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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

Но лучше покопаться с условиями отбора / объединения записей...
...
Рейтинг: 0 / 0
fox 2.6
    #33710399
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В МОЕМ СЛУЧАЕ 3 ВАРИАНТ.
СПАСИБО DISTINCT ПОМОГ.

А ЧТО ОН МОЖЕТ РАБОТАТЬ НЕКОРРЕКТНО?

А МОГУ ЛИ Я СДЕЛАТЬ ВЫБОРКУ ПО 2-М ПОЛЯМ И КАК ЭТО БУДЕТ ВЫГЛЯДЕТЬ?
НАПРИМЕР,
Select DISTINCT anal.* from anal,fakt where anal.(schet+code)=fakt.(schet+code)table copy1

СПАСИБО.
...
Рейтинг: 0 / 0
fox 2.6
    #33710483
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
Select DISTINCT anal.* ;
from anal,fakt ;
where anal.schet=fakt.schet AND anal.code=fakt.code ;
into table copy1
...
Рейтинг: 0 / 0
fox 2.6
    #33710770
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Следующий вопрос, если позволите

Нужно поле code обеих баз(т.е которые удовлетворяют условию anal.code=fakt.code ) перенумеровать.
...
Рейтинг: 0 / 0
fox 2.6
    #33710778
phonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не просто пронумеровать, а чтобы поле code в anal соответствовало code в fakt.
...
Рейтинг: 0 / 0
fox 2.6
    #33711886
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
phonixНе просто пронумеровать, а чтобы поле code в anal соответствовало code в fakt.
Не понял вопроса... Если anal.code=fakt.code, так это и так означает, что
поле code в anal соответствовало code в fakt.
Либо конкретизируй вопрос...
А еще лучше с примером:
- Пример проблемной процедуры / команды
- пример данных (что есть в исходном файле (ЗАПИСЕЙ 5-6), что отбирается сейчас (ЗАПИСЕЙ 2-3, частично покрывающие (являющиеся подмножеством) исходный набор записей) и что должно получиться на самом деле (ЗАПИСЕЙ 2-3, частично покрывающие (являющиеся подмножеством) исходный набор записей)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / fox 2.6
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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