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

(Resolvido) Utilizar ALIAS para recuperar dados


fulvio

Pergunta

Tópico inicial: http://scriptbrasil.com.br/forum/index.php?showtopic=148768

Bom dia Viperino,

rs... sem problemas.

O problema está no relacionamento entre as tabelas Historico_Analises e Utente.

Perceba que você está relacionando duas colunas da tabela Historico_Analises para uma coluna da tabela Utente.

HA_U_IT_Utente=U_Id

HA_U_IT_Medico=U_Id

Qual é o relacionamento correto?

Vamos às explicações:

- Na 1ª imagem que postou, os relacionamentos entre as tabelas estavam na ordem: T_Ana_Ind, Historico_Analises e Tipo_Analise. Quando fez o select, a ordem dos joins estavam invertidos. Neste caso o resultado não interfere (pois estavam relacionadas com INNER JOIN), mas o entendimento fica mais dificil.

- Quanto aos há, h, t.... Isto se chama ALIAS. É apenas um apelido para a tabela. A sintaxe ...from dbo.Tipo_Analise ta... é a mesma coisa de ...from dbo.Tipo_Analise AS ta....

você dá um apelido à tabela. Após isto, quando desejar referenciar algum campo ou fazer os join´s, você não precisará digitar todo o nome dela, apenas referenciá-la pelo apelido.

você pode fazer desta forma:

select Pessoa_Fisica.Nome, Pessoa_Fisica.Idade, Pessoa_Fisica.Endereco from Pessoa_Fisica, ....

Ou então, dar um apelido à tabela Pessoa_Fisica. O mesmo select de cima:

select p.Nome, p.Idade, p.Endereco from Pessoa_Fisica as p, ....

O AS pode ser suprimido, ficando:

select p.Nome, p.Idade, p.Endereco from Pessoa_Fisica p, ....

O select continua a mesma coisa, só que mais "limpo". :.)

Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

Boa tarde, fulvio.

Obrigado pela explicação. Ontem foi mais um dia de cão onde não tive acesso à net, mas mais vale tarde que nunca, não é assim?

A relação está correcta, penso eu. Um utente (U_Id) é que pode ser tanto "normal" como médico. Na tabela Utente, tenho lá o campo U_Tipo preenchida com "N" ou "M" consoante o caso O que eu não percebo aqui é como é que o query retorna o Id de utente, mas não consegue ir buscar o nome correspondente ao Id...

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia Viperino,

Com certeza. O que vale é aparecer!!! :.)

Neste exemplo então você terá que utilizar um ALIAS. Como já expliquei, agora você terá que fazer!!! rs.

Se um utente (U_Id) pode ser tanto "normal" como médico, você terá que referenciar a tabela Historico_Analises duas vezes. Uma vinculando ao "normal" e outra ao médico.

Ex.:

select hn.HA_U_Id_Utente UtenteNormal , hm.HA_U_Id_Medico UtenteMemdico,

count(distinct hn.HA_Z_Id) as [Numero de Mudancas Normal],

count(distinct hm.HA_Z_Id) as [Numero de Mudancas Medico], u.U_Nome

from Utente u left join Historico_Analises hn on u.U_Id = hn.HA_U_Id_Utente

left join Historico_Analises hm on u.U_Id = hm.HA_U_Id_Medico

Ficaria mais ou menos assim. Testa e vê se dá certo.

Link para o comentário
Compartilhar em outros sites

  • 0

Bom dia, fulvio.

Testei e dá certo. Obrigado. Mas dei por mim a pensar que talvez esta não fosse a abordagem mais correcta, pelo que optei por eliminar aqui a distinção entre médicos e utentes normais e inserir um campo "Tipo" na tabela utente. Assim, ficou mais fácil. :)

No entanto, muito obrigado pelas suas explicações. Têm sido bastante úteis.

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...