Jump to content
Fórum Script Brasil
  • 0

Query com 3 tabelas


Question

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 to post
Share on other sites

2 answers to this question

Recommended Posts

  • 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 to post
Share on other 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      148681
    • Total Posts
      644506
×
×
  • Create New...