Ajuda com Join p/ relatorio
23/05/2012
0
Nome das colunas,tipo de dado,se é nulo ou não,se possui default ou não.
Quero que ele faça isso das minhas próprias tabelas no banco intão montei os seguintes selects:
select COLUMN_NAME,DATA_TYPE,IS_NULLABLE,COLUMN_DEFAULT from information_schema.Columns where table_name = Fornecedores select I.name as Chave, IK.keyno as Ordem, c.name as Coluna from sys.sysindexes I, sys.sysindexkeys IK, sys.syscolumns C where I.id = IK.id and I.id = c.id and I.indid = IK.indid and IK.colid = C.colid and I.id = (select id from sys.sysobjects where xtype = U and name = Fornecedores) and IK.indid = 1 order by IK.keyno
Aonde Fornecedores vai ser passado via parâmetro pelo sistema, o que acontece,eu preciso de alguma forma fazer com que esses exibam juntos,tentei usar um left join com 2 inner join para montar,mais até agora não consegui nada....
Acontece que no 1º select tenho os dados de Nome da coluna,Tipo de dados,Nullo? e Default? e no 2º eu consigo retornar quem é a chave primaria da tabela em questão, porém preciso alimentar meu sistema de relatorio com apenas uma query....
Alguem consegue me ajudar? Grato de antemão (:
Darcio Junior
Posts
23/05/2012
Joel Rodrigues
De que forma você quer exibir isso tudo junto? Oberve que pode ocorre um produto cartesiano, por exemplo: se você tiver 10 colunas na tabela, sendo 2 chaves, você terá 20 registros.
Explique melhor, como você quer exibir essas informações.
Ah, faça o teste e execute o seguinte script:
SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT, I.name as Chave, IK.keyno as Ordem, c.name as Coluna FROM INFORMATION_SCHEMA.COLUMNS S, sys.sysindexes I, sys.sysindexkeys IK, sys.syscolumns C WHERE S.TABLE_NAME = Fornecedor AND I.id = IK.id AND I.id = c.id AND I.indid = IK.indid AND IK.colid = C.colid AND I.id = (select id from sys.sysobjects where xtype = U and name = Fornecedor) AND IK.indid = 1
Boa sorte.
23/05/2012
Darcio Junior
nome coluna,tipo de dado,null,default|chave,ordem,coluna
Basicamente quero que as 3 ultimas me mostrem junto de qual é a PK da tabela,retornando o restante como null,para no relatorio poder mostrar qual é a PK da tabela.
23/05/2012
Joel Rodrigues
COLUNA1|...|CHAVE_1 COLUNA2|...|CHAVE_1 COLUNA3|...|CHAVE_1 ... COLUNAN|...|CHAVE_1
E não é isso que você quer, certo?
A informação de qual é a chave da tabela não está relacionada com cada coluna.
Você estaria querendo saber, para cada coluna, se ela é chave da tabela ou não? Por exemplo:
COLUNA1|...|É CHAVE COLUNA2|...|NÃO É CHAVE COLUNA3|...|NÃO É CHAVE ... COLUNAN|...|NÃO É CHAVE
Seria isso?
23/05/2012
Darcio Junior
Basicamente preciso de algo similar ao design do manag studio so que com a parte do default junto...
ex: http://tinypic.com/r/2n0vo21/6
23/05/2012
Darcio Junior
COLUNA1|...|É CHAVE COLUNA2|...|NÃO É CHAVE COLUNA3|...|NÃO É CHAVE ... COLUNAN|...|NÃO É CHAVE
Exatamente isso que preciso
23/05/2012
Joel Rodrigues
23/05/2012
Joel Rodrigues
SELECT S.COLUMN_NAME, S.DATA_TYPE, S.IS_NULLABLE, S.COLUMN_DEFAULT, (SELECT CASE (SELECT COUNT(c.name) FROM sys.sysindexes I, sys.sysindexkeys IK, sys.syscolumns C WHERE I.id = IK.id and I.id = c.id and I.indid = IK.indid and IK.colid = C.colid and I.id = (select id from sys.sysobjects where xtype = U and name = Fornecedor) and IK.indid = 1 AND C.NAME = S.COLUMN_NAME) WHEN 0 THEN NÃO É CHAVE ELSE É CHAVE END) CHAVE FROM INFORMATION_SCHEMA.COLUMNS S WHERE TABLE_NAME = Fornecedor
Qualquer dúvida, é só falar.
23/05/2012
Joel Rodrigues
Boa sorte.
23/05/2012
Darcio Junior
23/05/2012
Joel Rodrigues
Quando precisar, o fórum está aberto.
Clique aqui para fazer login e interagir na Comunidade :)