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

Query com 3 tabelas


nerybahia

Pergunta

Olá, esta é minha primeira publicação aqui, então, toda ajuda é bem vinda.

Tenho um banco de dados com 3 tabelas (Atendimento, Material e Taxa), criei uma query que busca informações das três tabelas, onde, existe atendimento que não gera Material e/ou Taxa, mas para gerar Material ou Taxa, é necessário ter um Atendimento. Essa query retornou apenas os dados que existem nas 3 tabelas, como faço para retornar os dados das 3 tabelas em apenas uma query independente de ter registro na tabela de Material e/ou Taxas?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Prezado:

Left Join é a resposta. Quando você quer campos com registros da tabela à esquerda e campos com prováveis registros da tabela à direita, use left join. Exemplo da consulta:

select ate.*, mat.*, tax.*

from atendimento ate left join

 material mat on mat.campo_chave_estrangeira = ate.campo_chave_primaria left join

 taxa tax on tax.campo_chave_estrangeira = mat.campo_chave_primaria

1) Se não houver cláusula Where na consulta, todos os registros de Atendimento serão exibidos

2) Registros de Material vinculados ao Atendimento serão exibidos. Registros de Material sem vínculo com Atendimento serão exibidos como null.

3) Registros de Taxa vinculados ao Atendimento serão exibidos. Registros de Taxa sem vínculo com Atendimento serão exibidos como null.

A depender do banco de dados, ao invés de Left Join, poderá ser Left Outer Join.

Se fosse o inverso: me dê os prováveis registros de Atendimento e todos os registros de Material e todos os registros de Taxa... nesse caso seria o Right Join no lugar do Left Join.

 

Link para o comentário
Compartilhar em outros sites

  • 0
Em 13/06/2020 em 13:34, Sergio Alves disse:

Prezado:

Left Join é a resposta. Quando você quer campos com registros da tabela à esquerda e campos com prováveis registros da tabela à direita, use left join. Exemplo da consulta:

select ate.*, mat.*, tax.*

from atendimento ate left join

 material mat on mat.campo_chave_estrangeira = ate.campo_chave_primaria left join

 taxa tax on tax.campo_chave_estrangeira = mat.campo_chave_primaria

1) Se não houver cláusula Where na consulta, todos os registros de Atendimento serão exibidos

2) Registros de Material vinculados ao Atendimento serão exibidos. Registros de Material sem vínculo com Atendimento serão exibidos como null.

3) Registros de Taxa vinculados ao Atendimento serão exibidos. Registros de Taxa sem vínculo com Atendimento serão exibidos como null.

A depender do banco de dados, ao invés de Left Join, poderá ser Left Outer Join.

Se fosse o inverso: me dê os prováveis registros de Atendimento e todos os registros de Material e todos os registros de Taxa... nesse caso seria o Right Join no lugar do Left Join.

 

Caro Sérgio, muito obrigado, o Left Join resolveu a situação, consegui gerar apenas uma tabela para a informação que eu precisava, muitíssimo obrigado!

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