Ir para conteúdo
Fórum Script Brasil
  • 0

Dificuldades com views e tabelas virtuais!


Éder Borges

Pergunta

Boa tarde amigos, há tempos estou com 2 dúvidas e não encontro soluções.

A primeira dúvida é a seguinte:

-Preciso criar uma View e nela inserir uma nova primary key numerando os resultados.

EX: O resultado da view q eu consigo criar é assim :

ID_EVENTO | TITULO | DATA | DETALHES

12 xxxxxxx xxxxxx xxxxxxxxx

18 xxxxxxx xxxxxx xxxxxxxxx

21 xxxxxxx xxxxxx xxxxxxxxx

56 xxxxxxx xxxxxx xxxxxxxxx

Preciso que fique assim:

ID_NUMERACAO | ID_EVENTO | TITULO | DATA | DETALHES

1 12 xxxxxxx xxxxxx xxxxxxxxx

2 18 xxxxxxx xxxxxx xxxxxxxxx

3 21 xxxxxxx xxxxxx xxxxxxxxx

4 56 xxxxxxx xxxxxx xxxxxxxxx

A outra dúvida, é :

- Preciso criar uma tabela virtual a partir de um Select, para poder fazer outro Select sobre ela. E inserir nesta tabela a mesma ID_NUMERACAO do problema anterior.

Desde já agradeço!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom dia Éder,

Vamos a 1ª dúvida:

Quando for criar a view, crie a coluna ID_NUMERACAO como int Identity. Basta colocar logo após o tipo, a palavra Identity.

Caso a view já exista, insira a coluna:

alter table TABELA add ID_NUMERACAO int Identity

OBS.: Quando for fazer o insert, a coluna ID_NUMERACAO não precisa ser referenciada, por ser identity.

Vamos a 2ª dúvida:

A criação de tabelas virtuais pode ser realizada da seguinte forma:

- Tabela virtual no tempo de execução -> @

Sintaxe: declare @NomeTabela table (Valor int)

- Tabela virtual no tempo de execução, visível a outras instâncias -> @@

Sintaxe: declare @@NomeTabela table (Valor int)

- Tabela virtual existente enquanto a instância existir -> #

Sintaxe: create table #NomeTabela (valor int)

- Tabela virtual existente enquanto a instância existir, visível a outras instâncias -> ##

Sintaxe: create table ##NomeTabela (valor int)

No seu caso, provavelmente criará a tabela virtual com #. Crie a tabela, insira os dados e depois dê um select para conferir os dados inseridos.

Select * from #NomeTabela

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, boa tarde.

Só para complementar a resposta acima, é possível criar uma tabela virtual de forma mais simples quando for popular a mesma a partir de uma consulta. Nesse caso não há a necessidade de utilizar o comando Create Table.

O comando abaixo cria um tabela virtual baseada no resultado de uma consulta, esta tabela conterá os mesmos campos e informações do resultado do Select.

Sintaxe:

Select * into #NomeTabela from nome_view

Daí é só acessar as informações da tabela virtual: Select * from #NomeTabela

Link para o comentário
Compartilhar em outros sites

  • 0
Olá, boa tarde.

Só para complementar a resposta acima, é possível criar uma tabela virtual de forma mais simples quando for popular a mesma a partir de uma consulta. Nesse caso não há a necessidade de utilizar o comando Create Table.

O comando abaixo cria um tabela virtual baseada no resultado de uma consulta, esta tabela conterá os mesmos campos e informações do resultado do Select.

Sintaxe:

Select * into #NomeTabela from nome_view

Daí é só acessar as informações da tabela virtual: Select * from #NomeTabela

Esta sintaxe também é simples e eficiente, mas para manutenção é pior, pois pode passar despercebida (por ser implícita). Quando a sintaxe é maior e mais complexa, prefiro ser explícito. ;.)

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...