Как объединить отдельные столбцы из разных таблиц в одной таблице

#sql #visual-foxpro #dbf

#sql #visual-foxpro #dbf

Вопрос:

У меня есть следующие курсоры VFP (таблицы):

Курсор 1
Курсор 2
Курсор 3

и мне нужен этот результат:

Последний курсор

Я пробовал ПОЛНОЕ ОБЪЕДИНЕНИЕ, ПЕРЕКРЕСТНОЕ ОБЪЕДИНЕНИЕ, ОБЪЕДИНЕНИЕ ВСЕХ и т.д. Но я не могу решить проблему.

Пожалуйста, окажите мне любую помощь.

Я использую Visual FoxPro 9.0

Вот код:

 lkey = SYS(2015) 
CREATE CURSOR cur1 (unico c(10),valor c(2))
INSERT INTO cur1 values(lkey, 'A1')
INSERT INTO cur1 values(lkey, 'A2')
INSERT INTO cur1 values(lkey, 'A3')

CREATE CURSOR cur2 (unico c(10),valor c(2))
INSERT INTO cur2 values(lkey, 'B1')
INSERT INTO cur2 values(lkey, 'B2')
INSERT INTO cur2 values(lkey, 'B3')    

INSERT INTO cur3 values(lkey, 'C1')
INSERT INTO cur3 values(lkey, 'C2')
INSERT INTO cur3 values(lkey, 'C3')
  

Спасибо!

Комментарии:

1. unico есть ли ключ для объединения? Или только позиция курсоров имеет значение для определения того, какие строки следует объединить?

2. Мне это действительно не нужно. Я поместил этот столбец только для сопоставления записей, это нормально?

Ответ №1:

Если только положение записи в курсоре определяет критерии объединения, вы можете использовать recno() :

 SELECT cur1.valor, ;
       cur2.valor, ;
       cur3.valor ;
       FROM (SELECT valor, ;
                    RECNO() rn ;
                    FROM cur1) cur1 ;
            FULL JOIN (SELECT valor, ;
                              RECNO() rn ;
                              FROM cur2) cur2 ;
                      ON cur2.rn = cur1.rn ;
            FULL JOIN (SELECT valor, ;
                              RECNO() rn ;
                              FROM cur3) cur3 ;
                      ON cur3.rn = cur2.rn