Pequenas Dúvidas - Tabelas e Outros
23/10/2005
0
1) bom, no Firebird eu consigo pegar o nome de tabelas, views, procedures e triggers através de um comando sql, isso porque, algumas vezes o famoso GetTableNames de alguns datasets não funciona.
Bom, minha dúvida é, como posso pegar o nome dessas objetos do banco, através de algum comando interno do banco ou instrução SQL??
2) Como posso gerar uma numeração para as linhas retornadas de um select ? Tipo assim, no DB2 uso o Row_Number(), dessa forma: SELECT ROW_NUMBER() OVER() AS LINHA, NOME FROM TABELA ORDER BY CODIGO e na coluna chamada LINHA, tenho um tipo de sequencia, que começa em 1 e vai até a quantidade de registros listados. Existe algo parecido no postgree, ou tenho que usar um procedure?
3) Tem como gerar uma consulta do tipo CrossTab através de um select (igual ao do SQLServer e Access - Select Coluna1, COluna2, COluna3 from tabela Pivot Coluna1), isto é, pegar o conteúdo de uma coluna e transformar em linha (cabeçalho)??
Firekiller
Posts
23/10/2005
Bon Jovi
http://www.postgresql.org/docs/8.0/static/information-schema.html
Exemplo básico:
select * from information_schema.tables
where table_schema = ´public´
and table_type = ´BASE TABLE´;
2 - Não tem essa função do DB2, pelo menos até a versão 7.4 tenho certeza que nao, mas vc pode criar um Sequence temporario.
Ex.:
create temp sequence row_number;
-----------------------------------------
//sua query
select nextval(´row_number´) as numero_linha, * from tabela;
-----------------------------------------
drop sequence row_number;
3 - Assim automatico eu não conheço. Talvez tenha que fazer na unha mesmo.
24/10/2005
Firekiller
Bom, quanto ao problema 1, está resolvido, já o problema 2 creio que não. Pois pense só, se eu tiver 2 ou mais máquinas acessando ao mesmo tempo a mesma consulta, o contador de uma delas estaria errado, ou seja, continuaria, ou pegaria valores faltando. Teria algum comando do tipo do EXECUTE STATEMENT do firebird para que eu possa fazer isso em tempo de execução. A outra coisa, posso declarar direto dentro de procedures comandos do tipo CREATE SEQUENCE, CREATE TABLE, etc???
Quanto ao problema 3, achei 2 funções chamadas crosstab e crosstab2, porém não consegui fazer funcionar, alguém poderia me dizer se estas funções funcionam gerando uma crosstab mesmo??
Um outro problema é com a função CUBE do postgree. No DB2, ela gera um tipo de relatório, de acordo com o agrupamento, mas no Postgree ela tá dando um erro. Alguém sabe como utilizá-la??
Só lembrando, estou usando Postgree 8.2.
24/10/2005
Leonardoffsilva
A versão mais recente do PostgreSQL é a 8.04. A 8.1 ainda deve sar antes do fim deste ano!
24/10/2005
Firekiller
Por exemplo se tenho os seguintes dados
ID..............|...NOME..............
1................|...B
2................|...A
Se seu colocar SELECT * FROM TABELA, o campo com ID = 1 terá o valor dessa coluna (ROW_NUMBER() ? ) igual a 1, já se eu colocar assim, SELECT * FROM TABELA ORDER BY NOME ele tera o valor da coluna igual a 2.
E quanto ao crosstab ???
24/10/2005
Bon Jovi
Qto à outras questões, crie um tópico pra cada coisa que é melhor.
25/10/2005
Firekiller
Vou seguir seu conselho e abrir um novo post então.
Clique aqui para fazer login e interagir na Comunidade :)