объединение и объединение двух таблиц с разными номерами столбцов и то же имя столбца - PullRequest
0 голосов
/ 06 декабря 2008

Я попытался скомбинировать таблицы, которые fus_shift и корневую таблицу , в новую таблицу, которая финальная таблица , но в строке 2 выводится как " ERROR": ORA-01789: в блоке запроса указано неверное количество столбцов результата". Я попытался также присоединиться к таблице в качестве альтернативы, но он также выдает" ОШИБКА в строке 3: ORA-00918: столбец неопределенно определен". Есть ли другой способ объединить и объединить две таблицы с разным количеством столбцов и с одинаковым именем столбца соответственно? Еще раз спасибо: -)

Ошибка кода:
создать финальную таблицу как
выберите * из fus_shift
союз
выберите * из корня;

ошибка кода:
выберите значение record_num, test_num, t_date, t_time, system_type, категорию, комментарии, val
из fus_shiftrpt, root
где record_num = record_num;

мои столы:

                                 fus_shift Table


           Record_Num       test          date      time         system   
           -----------------------------------------------------------
                1          test15      08-11-12  13:20:01    sys23 
                2          test17      08-11-03  14:24:00    sys24
                3          test13      08-11-13  17:25:04    sys45
                4          test15      08-11-14  18:24:00    sys67
                5          test16      08-11-15  19:24:06    sys45


                                 root Table

           Record_Num      category   comments    validated by
           ---------------------------------------------------
                  1        dirt        checked        admin
                  2        prog        checked        admin
                  3        dirt        checked        pe
                  4        wires       checked        ee
                  5        prog        repair         admin

выделенный текст

Ответы [ 2 ]

3 голосов
/ 06 декабря 2008

Вы, конечно, не можете применить «Союз» к вашим столам. Его можно применять только в том случае, если оба запроса возвращают одинаковое количество (и одинакового типа) столбцов.

Вы можете объединить две таблицы, но при объединении придется использовать "псевдоним таблицы", поскольку поле "record_num" является общим для обеих таблиц. Вот запрос, который будет работать для вас

select 
        table1.record_num,
        table1.test_num,
        table1.t_date,
        table1.t_time,
        table1.system_type,
        table2.category,
        table2.comments,
        table2.val
from 
       fus_shift table1,root table2
where 
       table1.record_num = table2.record_num;
1 голос
/ 07 декабря 2008

Я бы использовал следующий метод:

SELECT * 
FROM fus_shift
INNER JOIN root ON root.record_num = fus_shift.record_num
...