SQL, como juntar três tabelas sem refex na segunda tabela?

user2502961

Tenho três tabelas no formato abaixo:

Tabela 1

Plan_ID  Plan_Code   Plan_Description  Location_ID
 1          A           Plan A             1

Tabela_2 (atualmente agora linhas)

ID   Plan_ID  Procedure_ID   Discount

Tabela 3

Procedure_ID   Procedure_Name  Procedure_Fee     Location_ID
   1                 P1             10              1
   2                 P2             20              1 
   3                 P3             30              1
   4                 P3             30              2

Portanto, preciso escrever uma consulta que produza abaixo do resultado quando Plan_Id é passado e também combinando as Tabelas 1 e 3 Location_ID:

Plan_ID  Plan_Code   ID   Procedure_ID  Procedure_Name  Procedure_Fee Discount
   1          A       0        1               P1            10          0
   1          A       0        2               P2            20          0
   1          A       0        3               P3            30          0

Também na Tabela_2, se tivermos linhas de referência cruzada

ID   Plan_ID  Procedure_ID   Discount
 1      1          2            5

Abaixo deve estar o resultado da consulta:

Plan_ID  Plan_Code   ID   Procedure_ID  Procedure_Name  Procedure_Fee Discount
   1          A       0        1               P1            10          0
   1          A       1        2               P2            20          5
   1          A       0        3               P3            30          0

Até agora eu tentei:

declare @planID int =1 
SELECT t1.Plan_ID, 
    t1.Plan_Code,
    t2.ID,
    t3.Procedure_ID,
    t3.Procedure_Name,
    t3.Procedure_Fee,
    t2.Discount
FROM table1 tl
LEFT JOIN table2 t2 
    on t1.Plan_ID=t2.Plan_ID  
RIGHT JOIN table3 t3 
    ON t2.Procedure_ID  = t3.Procedure_ID and t1.Location_Id=t3.LocationID
where t1.Plan_Id = @planID

Mas por causa da wherecondição, a consulta não produz nenhum resultado, mas quando substituo a wherecondição na primeira junção, obtenho uma saída incorreta. Tentei executar a consulta com sequência de tabela diferente e opção de junção, mas não consegui.

Sloan Thrasher

Uma vez que a tabela 2 pode ou não ter uma linha correspondente, você precisa lidar com os dados ausentes nas correspondências entre a tabela 1 e a tabela 2:

declare @planID int = 1;

SELECT t1.Plan_ID, 
    t1.Plan_Code,
    if(t2.ID IS NULL,0,t2.ID) as `ID`,
    t3.Procedure_ID,
    t3.Procedure_Name,
    t3.Procedure_Fee,
    IF(t2.Discount IS NULL,0,t2.Discount) as `Discount`
FROM table1 tl
JOIN table3 t3 
    ON t1.Location_Id = t3.LocationID
LEFT JOIN table2 t2 
    ON t2.Procedure_ID  = t3.Procedure_ID and t1.Plan_ID = t2.Plan_ID  
where t1.Plan_Id = @planID;

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como juntar duas tabelas no Django ORM sem nenhuma coluna na primeira tabela referenciando a segunda

como juntar três tabelas sem duplicação no sql?

Como posso juntar duas tabelas com duas colunas que se referem à mesma coluna na segunda tabela no SQL Server

Como juntar 2 tabelas sem chave comum e gerar aleatoriamente linhas da segunda tabela

Como juntar três tabelas no servidor sql

Como juntar três tabelas usando uma única tabela no hibernate?

Como juntar tabelas sem usar join sql

Como juntar duas tabelas em mongodb com agregado e pesquisa que tenho como matriz na segunda tabela?

Como juntar três tabelas para verificar os dados no sql?

Como juntar duas tabelas em PHP - MySQL que correspondem a um ID na segunda tabela e ainda exibem registro específico na tabela 1?

Como juntar tabelas no Sql?

Como juntar 2 tabelas sem relacionamento em SQL

Como juntar três tabelas em SQLite?

Como juntar em três tabelas no mysql

Como juntar em três tabelas no mysql

Como juntar duas tabelas e usar a segunda tabela para substituir a primeira?

Como juntar três tabelas em cakephp, uma delas é a tabela HABTM

Como juntar três tabelas e obter valor na visualização em grade

como juntar linhas na tabela

Como juntar 3 tabelas sem colunas duplicadas?

Como juntar 2 tabelas sem campos comuns?

Como juntar três tabelas de banco de dados em sql

Como juntar a mesma tabela e calcular dados na alquimia SQL

JOIN duas tabelas, classificar por campo na segunda tabela, sem duplicatas

Selecione registros sem correspondência de duas tabelas com um filtro na segunda tabela

Como otimizar minha consulta sobre juntar 3 tabelas na mesma tabela?

Como juntar 2 tabelas com consulta de soma múltipla na tabela e agrupar por

Como combinar / juntar tabela na tabela Python?

Como selecionar uma linha específica da tabela SQL e juntar várias tabelas no servidor SQL?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo