powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Присоединить две таблицы
15 сообщений из 15, страница 1 из 1
Присоединить две таблицы
    #38586783
У меня есть две таблицы в Foxpro 2.6 в первой одно поле tab_nom C(4) строк 10 и во второй таблице поле fio C(20) 15 строк. Как к первой таблице справа присоединить вторую таблицу ( чтоб в общей таблице в поле tab_nom после 10 строки были пустые значения)
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38586828
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше приведите пример того, как должна выглядеть результирующая выборка (картинку нарисуйте). Фраза "присоединить справа" и "после 10" противоречат друг другу.

Вот решение для "после 10"

Код: sql
1.
2.
3.
4.
5.
select padr(tab_Nom,20) as tab_Nom ;
from Table1 ;
union all ;
select fio as tab_Nom ;
from Table2
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38586898
Tаb_nom
1. 0001
2. 1051
... ...
10. 2111

Fio
1. Петров
2. Иванов
... ...
15. Сидоров

Таблица, которая должна получиться:

Tаb_nom Fio
1. 0001 Петров
2. 1051 Иванов
... ...
10. 2111 фамилия
11. Фамилия
....
15. Сидоров
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38586999
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так не пойдет. По каким правилам сопоставлять записи. Вот на каком основании табельному номеру 0001 должна соответствовать фамилия "Петров", а табельному номеру 1051 фамилия "Иванов"?

У Вас либо в таблице tab_nom должна быть ссылка на запись таблицы Fio, либо наоборот, в таблице Fio должна быть ссылка на запись таблицы Tab_nom

В общем случае, поскольку в FP2.6 еще не было Join, то задача решается двумя запросами объединенными через UNION. В справке по команде Select-SQL в FP2.6 есть такой пример

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT customer.company, invoices.ino, invoices.itotal ;
	FROM customer, invoices ;
	WHERE customer.cno = invoices.cno ;
UNION ;
	SELECT customer.company, 0, 0.00 ; 
	FROM customer ;
	WHERE customer.cno NOT IN ;
	(SELECT invoices.cno FROM invoices)


Вот примерно такой запрос и надо сделать, немного доработав его под свои нужды.

Запрос до UNION - это те записи у которых для tab_nom есть соответствующие fio, а запрос после UNION - это те fio для которых нет tab_nom. А вот по какому полю искать соответствие - это уже Вам виднее
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38587109
ВладимирМ, мне нужно присоединить поля из двух таблиц по соответствию номеров строк и только. Данная таблица показана мною для примера, на самом деле смысла не имеет.
Напишите пожалуйста как выглядит такой запрос с Join в VFP, и что такое customеr.cno - это номер записи rесno?
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38587209
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена Пантера,

При Select'e Recno не используется.
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38588725
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена ПантераВладимирМ, мне нужно присоединить поля из двух таблиц по соответствию номеров строк и только. Данная таблица показана мною для примера, на самом деле смысла не имеет.
Напишите пожалуйста как выглядит такой запрос с Join в VFP, и что такое customеr.cno - это номер записи rесno?
Я так понимаю, что термины "первичный ключ" (Primary Key) и "внешний ключ" (Foreign Key) Вы воспринимаете как некое злое "колдунство" или грязные ругательства Если Вы хотите (или вынуждены) и дальше заниматься программированием в среде реляционных баз данных, то запишитесь на какие-нибудь простейшие курсы по команде Select-SQL (ну, или книжку купите. Можно из самых дешевых). Даже если это будут курсы совсем "для чайников" и там не будут давать теорию, то уж с практической точки зрения необходимость связи между таблицами обязательно покажут.

Вкратце. Некоторые "аксиомы"

Физический номер записи (то, что возвращает Recno()) не есть нечто фиксированное. Это результат некоторого расчета. Как следствие, идентификатором записи может являться лишь условно. В том смысле, что это значение останется не изменным только при выполнении ряда условий. В командах Select-SQL использовать эту функцию крайне не желательно, поскольку выполнение этих условий внутри команды Select-SQL становится проблематичным, как следствие, теряется возможность идентификации записей.

FP2.x и Visual FoxPro - это РАЗНЫЕ языки программирования. Не обманывайтесь внешним сходством и общими командами. Разные они прежде всего в самом подходе в работе с данными.

Для Visual FoxPro (особенно для 9 версии) - синтаксис команды Select-SQL настолько широк, что позволяет использовать ее как основной инструмент по работе с данными

Для FP2.x синтаксис команды Select-SQL откровенно слаб. Это является одной из причин того, что команда Select-SQL в FP2.x выполняет второстепенную, вспомогательную роль. Основную роль играют "навигационные" команды и SET RELATION + SET SKIP TO

Из всего этого следует тот факт, что, во-первых, без "извратов" объединить таблицы по их физическому номеру записи - невозможно. В рамках одной команды Select-SQL еще можно "извратится" в VFP9, но для FP2.x потребуется несколько последовательных запросов, что не всегда возможно в силу ограниченности количества одновременно открытых рабочих областей (до 25 в стандартной версии и до 225 в расширенной)

Для FP2.x стандартным приемом является сканирование таблиц-источников и последовательное (построчное) наполнение предварительно созданной временной таблицы (курсора). Примерно так

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
* Создаем временную таблицу, куда будет записан результат
CREATE CURSOR Result (tab_nom C(4), fio C(20))

* Подготавливаем рабочие области исходных таблиц
select tabNOM
set order to
set filter to
go top

select tabFIO
set order to
set filter to
go top

* Организуем "бесконечный" цикл для перебора всех записей
* пока не достигнем конца файла во всех таблицах-источниках
do while eof('tabNOM') = .F. OR eof('tabFIO') = .F.

    * Заполняем очередную запись результирующего курсора
    insert into Result (tab_nom, fio) values (tabNOM.tab_nom, tabFIO.fio)

    * Переходим к следующим записям таблиц-источников
    if eof('tabNOM') = .F.
        skip in tabNOM
    endif

    if eof('tabFIO') = .F.
        skip in tabFIO
    endif

enddo

* смотрим результат
select Result
browse nowait



Ну, и под конец. Вы задали вопрос не о том, как решить Вашу задачу, а о том, как решить Вашу задачу придуманным Вами же способом. Ни за что не поверю, что между таблицами с табельными номерами и фамилиями нет связи по типу PK-FK. Это значит, что Вы начали решать задачу придуманным Вами способом, но на некотором этапе зашли в тупик. И вместо того, чтобы предположить, что сам способ решения не корректен, Вы пытаетесь придумать пути обхода "тупика", создавая себе дополнительные трудности, чтобы потом их героически преодолевать
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38589927
ВладимирМ,
Я бы с удовольствием записалась на курсы, но у нас в Ташкенте(Узбекистане) нет курсов по foxpro и книги тоже не продаются. В интернете нахожу материал по фоксу, но там нет примеров использования функций, только синтаксис.
Посоветуйте самую хорошую книгу по Fox2х и книгу по VFP, где подробно все написано, может получится заказать.
А по поводу этой задачи я ее могу решить более долгим способом, просто думала что можно одним запросом и поэтому спросила.
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591201
alextashk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591397
alextashk,
в гугле искала, там есть книга по VFP9 автор Лебедев, и вторая книга Гурвиц.) Стоит ли скачивать?
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591411
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена Пантера,

у вас же фокс2.6, зачем вам (сейчас) книги по вфп?
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591673
tanglir,
мне нужно и то и другое.)) Не подскажете где можно найти информацию или электронную книгу как в Foxpro 2.6 создать программу в разными меню вкладками и т.п.,чтоб было описано на каком-нибудь примере?!
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591674
tanglir,
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38591837
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена Пантера,

http://www.sql.ru/forum/40178/gde-dostat-uchebnik-ili-help-po-foxpro-2-6

ИЧСХ, последняя ссылка до сих пор вроде жива
...
Рейтинг: 0 / 0
Присоединить две таблицы
    #38592460
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Елена ПантераВладимирМ,
Я бы с удовольствием записалась на курсы, но у нас в Ташкенте(Узбекистане) нет курсов по foxpro и книги тоже не продаются. В интернете нахожу материал по фоксу, но там нет примеров использования функций, только синтаксис.
Посоветуйте самую хорошую книгу по Fox2х и книгу по VFP, где подробно все написано, может получится заказать.
А по поводу этой задачи я ее могу решить более долгим способом, просто думала что можно одним запросом и поэтому спросила.
Я говорил о книгах не по FoxPro, а про книги по одной единственной команде Select-SQL. У Вас проблемы с пониманием того, как и для чего создаются таблицы. В смысле, какая структура (содержание) таблиц должна быть.

Нет, в принципе, можно, конечно, и книги почитать по теории реляционных баз данных, только вот, они практически бесполезны. Слишком сложно соотнести изложенную в них теорию с тем, что реально есть в конкретном языке программирования. Да и терминология разная, что сильно сбивает с толку. Поэтому, как мне кажется, тут проще понять на практике, какие запросы делаются и что для этих запросов требуется.

А насчет книг по FoxPro, почитать, конечно, можно, только опять же, это почти бесполезное занятие. Ну, не учат такие книги программированию. Как правило, это банальный пересказ Help своими словами. Просто разные книги разные разделы Help пересказывают

Ну, если очень хочется, то

По FoxPro 2.x - Попов А.А. Создание приложений для FoxPro 2.5/2.6 в DOS и Windows.

По ней есть много разных ссылок. Ну, например, здесь http://fox-populi.com/books.htm

По VFP9 - http://www.foxclub.ru/vfpbook/
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Присоединить две таблицы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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