Colunas de tabelas

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

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.

Selecionar tudo

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..
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

Faz um UNION!!
Algo assim:

Selecionar tudo

select bla bla bla
from tabela1
  UNION ALL
select bla bla bla 
from tabela2
Será que isso não resolve ?
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

dr_gori, para o que eu priciso, o union não vai funcionar... já fiz esses testes...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

Mostra aí como você quer que seja o retorno do seu SQL.
Daí a gente consegue dar uma força!!! :-o
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

lá vai...

o código a seguir mostra as colunas da tabela...

Selecionar tudo

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...

Selecionar tudo

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...

Selecionar tudo

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

Selecionar tudo

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...

Selecionar tudo

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...
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

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

Fiz um pouco diferente:

Selecionar tudo

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
Avatar do usuário
anderson
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 75
Registrado em: Seg, 06 Jun 2005 1:08 pm
Localização: Toledo - PR
Contato:
Anderson Nuernberg
---

meeeeeeeeeeeeeuuuuuuuuuuu.....

é isso mesmo dr_gori...

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

valeu.

[]´s :-o
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 13 visitantes