Colunas de tabelas

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Sex, 25 Nov 2005 10:13 am

Salve galera...

Seguinte, estou fazendo uma query que busca as colunas de uma determinada tabela, até ai tudo bem, também tenho uma query que busca as colunas pk da mesma tabela, mas agora quero fazer tudo isso em uma query só...
até consegui, mas me retorna somente as colunas pk, tentei usar o outer joined mas não consegui...
alguém tem uma dica ai...
segue o código.
Código: Selecionar todos
SELECT c.column_name,
       c.data_type,
       c.data_length,
       c.data_precision,
       c.data_scale,
       c.nullable,
       decode(u.column_name,NULL,NULL,'PK') PK
  FROM user_tab_columns  c,
       user_constraints  q,
       user_cons_columns u
WHERE c.table_name      = upper('QS_NOTA_FISCAL')
   AND c.table_name      = q.table_name
   AND c.column_name     = u.column_name
   AND q.constraint_type = 'P'
   AND q.table_name      = u.table_name
   AND q.constraint_name = u.constraint_name
ORDER BY c.column_id


valeu..
anderson
Localização: Toledo - PR

Anderson Nuernberg
---

Mensagemem Sex, 25 Nov 2005 10:28 am

Faz um UNION!!
Algo assim:
Código: Selecionar todos
select bla bla bla
from tabela1
  UNION ALL
select bla bla bla
from tabela2


Será que isso não resolve ?
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Sex, 25 Nov 2005 12:39 pm

dr_gori, para o que eu priciso, o union não vai funcionar... já fiz esses testes...
anderson
Localização: Toledo - PR

Anderson Nuernberg
---

Mensagemem Sex, 25 Nov 2005 12:54 pm

Mostra aí como você quer que seja o retorno do seu SQL.
Daí a gente consegue dar uma força!!! :-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Sex, 25 Nov 2005 1:09 pm

lá vai...

o código a seguir mostra as colunas da tabela...
Código: Selecionar todos
SELECT column_name, data_type, data_length, data_precision, data_scale, nullable
  FROM user_tab_columns
WHERE table_name = upper(prm_nome_tabela)
ORDER BY column_id


o código a seguir mostras as pk da tabela...
Código: Selecionar todos
select u.table_name
      ,u.constraint_name
      ,u.column_name
  from user_constraints q
      ,user_cons_columns u
where q.table_name        like upper(prm_nome_tabela)
   and q.constraint_type   = 'P'
   and u.table_name        = q.table_name
   and u.constraint_name   = q.constraint_name


então fim um único select, mas só mostra as pk...
Código: Selecionar todos
SELECT c.column_name,
       c.data_type,
       c.data_length,
       c.data_precision,
       c.data_scale,
       c.nullable,
       decode(u.column_name,NULL,NULL,'PK') PK
  FROM user_tab_columns  c,
       user_constraints  q,
       user_cons_columns u
WHERE c.table_name      = upper(prm_nome_tabela)
   AND c.table_name      = q.table_name
   AND c.column_name     = u.column_name
   AND q.constraint_type = 'P'
   AND q.table_name      = u.table_name
   AND q.constraint_name = u.constraint_name
ORDER BY c.column_id


Código: Selecionar todos
COLUMN_NAME               DATA_TYPE   DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE PK
------------------------- ----------- ----------- -------------- ---------- -------- --
CD_TIPO_PESSOA_EMPRESA    NUMBER               22              3          0 N        PK
CD_PESSOA_EMPRESA         NUMBER               22              7          0 N        PK
CD_TIPO_PESSOA_FILIAL     NUMBER               22              3          0 N        PK
CD_PESSOA_FILIAL          NUMBER               22              7          0 N        PK
CD_NOTA_FISCAL            NUMBER               22              7          0 N        PK


e deveria ser algo mais ou menos assim... na última coluna mostrando se o campo é pk ou não...
Código: Selecionar todos
COLUMN_NAME               DATA_TYPE   DATA_LENGTH DATA_PRECISION DATA_SCALE NULLABLE PK
------------------------- ----------- ----------- -------------- ---------- -------- --
CD_TIPO_PESSOA_EMPRESA    NUMBER               22              3          0 N        PK
CD_PESSOA_EMPRESA         NUMBER               22              7          0 N        PK
CD_TIPO_PESSOA_FILIAL     NUMBER               22              3          0 N        PK
CD_PESSOA_FILIAL          NUMBER               22              7          0 N        PK
CD_NOTA_FISCAL            NUMBER               22              7          0 N        PK
CD_SERIE_NOTA_FISCAL      VARCHAR2              3                           N
NR_NOTA_FISCAL            NUMBER               22              7          0 N
NR_PIM_NOTA_FISCAL        NUMBER               22              6          0 N
ID_TIPO_NOTA_FISCAL       VARCHAR2              2                           N
CD_OPERACAO_FISCAL_MAT    NUMBER               22              4          0 Y
CD_OPERACAO_FISCAL_SRV    NUMBER               22              4          0 Y
CD_TIPO_DOCUMENTO         NUMBER               22              3          0 N
CD_FORMA_PAGAMENTO        NUMBER               22              3          0 Y
DT_EMISSAO                DATE                  7                           N
DT_SAIDA                  DATE                  7                           Y
HR_SAIDA                  DATE                  7                           Y
...
...
...
...


mas como disse nesse último select, só está retornado as pk´s...
anderson
Localização: Toledo - PR

Anderson Nuernberg
---

Mensagemem Sex, 25 Nov 2005 2:12 pm

Fiz um pouco diferente:
Código: Selecionar todos
SELECT
  X.COLUMN_NAME
, X.data_type
, X.data_length
, X.data_precision
, X.data_scale
, X.nullable
, Z.PK
FROM
  USER_TAB_COLUMNS X
, (select u.column_name, 'PK' PK
   from user_constraints q
       ,user_cons_columns u
   where q.table_name        like upper('CAM_COTACOES')
     and q.constraint_type   = 'P'
     and u.table_name        = q.table_name
     and u.constraint_name   = q.constraint_name
  ) Z
WHERE X.column_name = Z.COLUMN_NAME(+)
  AND X.TABLE_NAME like upper('CAM_COTACOES')
ORDER BY X.column_id


:-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered

Mensagemem Sex, 25 Nov 2005 2:29 pm

meeeeeeeeeeeeeuuuuuuuuuuu.....

é isso mesmo dr_gori...

ficou show de bola, é isso mesmo que eu queria...

valeu.

[]´s :-o
anderson
Localização: Toledo - PR

Anderson Nuernberg
---



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante