2014-10-07 4 views
0

Я столкнулся с чем-то, что не имеет смысла.
Это форма SAAADMS, содержащая вкладку Curriculum. Форма имеет поля (столбцы) из разных источников (таблицы). Большинство этих столбцов имеют соответствующую таблицу, но идентификатор пользователя и дата активности (в красном прямоугольнике) не имеют соответствующей таблицы!Oracle SQL - столбец не соответствует таблице

Form with Tabs - 2 Columns with no corresponding Table

Вы можете видеть, что SOVLCUR_ACTIVITY_DATE и SOVLCUR_USER_ID не имеют соответствующую таблицу. В нем говорится «Нет.». Остальные два столбца, которые я перечислял (я только перечислил пару, так как их несколько), имеют соответствующую таблицу.

Column Descriptions

Я пытаюсь извлекать данные из двух столбцов, без соответствующей таблицы.
Таблица SOVLCUR У меня в настоящее время в коде НЕ существует.

Как найти, где это SOVLCUR_USER_ID и SOVLCUR_ACTIVITY_DATE данные хранятся или извлекаются из столбца, который, как представляется, не имеет таблицы?

Если данные на самом деле не хранятся в SOVLCUR_USER_ID и SOVLCUR_ACTIVITY_DATE, есть ли способ увидеть, где он хранится? найти все связанные столбцы?

SELECT 
SP.SPRIDEN_ID AS "STUDENT_ID", 
SP.SPRIDEN_LAST_NAME AS "LAST", 
SP.SPRIDEN_FIRST_NAME AS "FIRST", 
SD.SARADAP_TERM_CODE_ENTRY AS "TERM", 
SD.SARADAP_APPL_DATE AS "APP_DATE", 
SV.SOVLCUR_USER_ID AS "USER_ID", /*SOVLCUR table does not exist*/ 
SV.SOVLCUR_ACTIVITY_DATE AS "ACTIVITY_DATE", /*SOVLCUR table does not exist*/ 
SYSDATE 

FROM 
SPRIDEN SP 
JOIN SARADAP SD 
ON SPRIDEN_PIDM = SARADAP_PIDM 
JOIN SOVLCUR SV /*This table does not exist*/ 
ON SPRIDEN_PIDM = SOVLCUR_PIDM 

WHERE 
SP.SPRIDEN_CHANGE_IND IS NULL 
AND 
SD.SARADAP_TERM_CODE_ENTRY >= '201510' 
AND 
SV.SOVLCUR_USER_ID NOT IN ('SSmith', 'JJones') 
AND 
SV.SOVLCUR_ACTIVITY_DATE BETWEEN SYSDATE-1 AND SYSDATE 

ответ

2

Oracle открывается вид/таблицы, которые могут быть запрос, чтобы узнать, что тип информации:

select table_name from all_tab_columns 
    where column_name = 'COLUMN NAME'; 

Этот запрос возвращает все таблицы, где этот столбец существует.

+0

Да, она доказывает, что это не настоящая колонка. Благодарю. –

1

Как пользователь1261620 сказал, используйте ALL_TAB_COLUMNS, чтобы увидеть имя_таблицы, соответствующее имени_ column_name. Но, как вы говорите, не существует нескольких таблиц, возможно, это не таблицы, а VIEWS.

Для того, чтобы подтвердить, действительно ли те TABLE или VIEW, вы можете запросить ALL_OBJECTS

SELECT object_name, object_type 
    FROM all_objects 
    WHERE object_name = 'SOVLCUR'; 

Если вышеприведенные возвращает ни одной строки, это будет означать, объект действительно не существует. Но в этом случае запрос не будет выполнен, так как он вообще не будет разбираться. Вы получите ошибку: table/view не существует`.

Кроме того, не все значения должны всегда храниться в базе данных. Вычисленные значения обычно вычисляются с помощью запроса и возвращаются пользователю для отображения. И кроме вычисленных значений, несколько статических значений, таких как SYSDATE, могут динамически генерироваться, а не хранить их в базе данных и запрашивать их.

Итак, я думаю, это не таблицы, а VIEWS. Следуйте инструкциям, как я сказал, чтобы иметь четкое понимание.

Update на основе новых входов OP в

Итак, теперь вы знаете, что SOVLCUR является синонимом.Выполните следующий запрос, чтобы увидеть его детали:

SELECT * FROM all_synonyms WHERE synonym_name = 'SOVLCUR'; 

Например,

Я пользователь LALIT, и создать синоним для таблицы EMP в SCOTT схеме.

SQL> show USER 
USER is "LALIT" 
SQL> 
SQL> CREATE OR REPLACE SYNONYM lalit FOR scott.emp 
    2/

Synonym created. 

SQL> 
SQL> SELECT owner, synonym_name, table_owner, table_name 
    2  FROM all_synonyms 
    3 WHERE synonym_name = 'LALIT' 
    4 /

OWNER  SYNONYM_NAME TABLE_OWNER TABLE_NAME 
---------- --------------- ------------ ---------- 
LALIT  LALIT   SCOTT  EMP 

Таким образом, table_owner и table_name показывает SCHEMA является SCOTT и TABLE является EMP.

+0

Имя объекта: SOVLCUR, Тип объекта: SYNONYM --- Итак, если это синоним, означает ли это, что SOVLCUR фактически заполнен из другого столбца? Значит, я должен найти другую колонку? Если да, есть ли у вас какие-либо идеи, как найти столбец? –

+0

@AuntieAnita, см. Мое обновление в ответе. –

+0

Владелец: PUBLIC, Синоним Имя: SOVLCUR, владелец таблицы (схема): BANINST1, название таблицы (таблица): SOVLCUR. --- Значит ли это, что 'SOVLCUR_USER_ID' и' SOVLCUR_ACTIVITY_DATE' находятся в схеме BANINST1 в таблице SOVLCUR? Если да, могу ли я туда попасть и выбрать данные из другой схемы? Или как я могу выбрать эти два столбца из моего текущего запроса? –

Смежные вопросы