Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ThiagoCunha

com o Uso de LEFT JOIN

Recommended Posts

Olá Pessoal,

 

No antigo banco MySQL que eu tinha, conseguia fazer tal comando:

 

LEFT JOIN credito_restante ON dividas.id = credito_restante.divida AND recibos.id = credito_restante.recibo

 

Utilizando 3 tabelas no LEFT JOIN, agora ao migrar o banco para SQL SERVER o mesmo nao aceita o uso de 3 tabelas no LEFT JOIN, alguém poderia me ajudar?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aceita sim, verifique se esta usando as tabelas anteriormente, qq. coisa coloca ai o comando inteiro que tu ta tentando construir

 

t+

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá esse é o Select que está funcionando em MySQL:

 

SELECT

temp_counter.counter AS counter ,

parcelas.id AS parcelas_id ,

parcelas.status AS parcelas_status ,

parcelas.recibo AS parcelas_recibo ,

parcelas.vencimento AS parcelas_vencimento ,

parcelas.baixa AS parcelas_baixa ,

parcelas.descricao AS parcelas_descricao ,

parcelas.valor + 0 AS parcelas_valor ,

parcelas.correcao + 0 AS parcelas_correcao ,

parcelas.multa + 0 AS parcelas_multa ,

parcelas.juros + 0 AS parcelas_juros ,

parcelas.taxa + 0 AS parcelas_taxa ,

parcelas.honorarios + 0 AS parcelas_honorarios ,

parcelas.desconto + 0 AS parcelas_desconto ,

parcelas.posacordo + 0 AS parcelas_posacordo ,

dividas.id AS dividas_id ,

dividas.nome AS dividas_nome ,

dividas.descricao AS dividas_descricao ,

dividas.contrato AS dividas_contrato ,

clientes.id AS clientes_id ,

clientes.nomefantasia AS clientes_nomefantasia ,

clientes.razaosocial AS clientes_razaosocial ,

devedores.id AS devedores_id ,

devedores.nome AS devedores_nome ,

devedores.cpf AS devedores_cpf ,

acordos_parcelas.pagamento AS acordos_parcelas_pagamento ,

acordos_parcelas.credito AS acordos_parcelas_credito ,

acordos_parcelas.cheque AS acordos_parcelas_cheque ,

acordos_parcelas.banco AS acordos_parcelas_banco ,

acordos_parcelas.praca AS acordos_parcelas_praca ,

tipo_forma.descricao AS tipo_forma ,

ISNULL(cast(credito_anterior.valor as decimal(10,2)),0) AS credito_anterior ,

ISNULL(cast(credito_restante.valor as decimal(10,2)),0) AS credito_restante ,

'' AS extenso ,

'' AS judicial_processo ,

'' AS judicial_vara

FROM parcelas, campanhas, clientes, devedores, acordos_parcelas, tipo_forma, temp_counter, dividas, recibos

LEFT JOIN credito_anterior ON dividas.id = credito_anterior.divida AND recibos.id = credito_anterior.recibo

LEFT JOIN credito_restante ON dividas.id = credito_restante.divida AND recibos.id = credito_restante.recibo

WHERE parcelas.divida = dividas.id

AND dividas.campanha = campanhas.id

AND campanhas.cliente = clientes.id

AND dividas.devedor = devedores.id

AND acordos_parcelas.id = recibos.acordo_parcela

AND recibos.id = parcelas.recibo

AND acordos_parcelas.forma = tipo_forma.id

AND parcelas.recibo = 123456

 

Quando vou executá-lo no SQL-Server ele fica dando o seguinte erro:

Msg 4104, Level 16, State 1, Line 1

The multi-part identifier "dividas.id" could not be bound.

 

Se coloco a tabela de dividas por ultimo no FROM ele dá o seguinte erro:

Msg 4104, Level 16, State 1, Line 1

The multi-part identifier "recibos.id" could not be bound.

 

Não sei como solucionar o problema, se alguém puder me ajudar, ficarei muito grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta tirar o temp_counter, no sql server não tem essa função

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estarei aqui postando como ficou o SQL final, que com a ajuda de todos solucionei o problema:

 

 

 

SELECT

temp_counter.counter AS counter ,

parcelas.id AS parcelas_id ,

parcelas.status AS parcelas_status ,

parcelas.recibo AS parcelas_recibo ,

parcelas.vencimento AS parcelas_vencimento ,

parcelas.baixa AS parcelas_baixa ,

parcelas.descricao AS parcelas_descricao ,

Cast(parcelas.valor as Money) + 0 AS parcelas_valor ,

Cast(parcelas.correcao as Money) + 0 AS parcelas_correcao ,

Cast(parcelas.multa as Money) + 0 AS parcelas_multa ,

Cast(parcelas.juros as Money) + 0 AS parcelas_juros ,

Cast(parcelas.taxa as Money) + 0 AS parcelas_taxa ,

Cast(parcelas.honorarios as Money) + 0 AS parcelas_honorarios ,

Cast(parcelas.desconto as Money) + 0 AS parcelas_desconto ,

Cast(parcelas.posacordo as Money) + 0 AS parcelas_posacordo ,

dividas.id AS dividas_id ,

dividas.nome AS dividas_nome ,

dividas.descricao AS dividas_descricao ,

dividas.contrato AS dividas_contrato ,

clientes.id AS clientes_id ,

clientes.nomefantasia AS clientes_nomefantasia ,

clientes.razaosocial AS clientes_razaosocial ,

devedores.id AS devedores_id ,

devedores.nome AS devedores_nome ,

devedores.cpf AS devedores_cpf ,

acordos_parcelas.pagamento AS acordos_parcelas_pagamento ,

acordos_parcelas.credito AS acordos_parcelas_credito ,

acordos_parcelas.cheque AS acordos_parcelas_cheque ,

acordos_parcelas.banco AS acordos_parcelas_banco ,

acordos_parcelas.praca AS acordos_parcelas_praca ,

tipo_forma.descricao AS tipo_forma ,

ISNULL(cast(credito_anterior.valor as decimal(10,2)),0) AS credito_anterior ,

ISNULL(cast(credito_restante.valor as decimal(10,2)),0) AS credito_restante ,

'' AS extenso ,

'' AS judicial_processo ,

'' AS judicial_vara

FROM

temp_counter, parcelas

INNER JOIN dividas

ON parcelas.divida = dividas.id

INNER JOIN campanhas

ON dividas.campanha = campanhas.id

INNER JOIN clientes

ON campanhas.cliente = clientes.id

INNER JOIN devedores

ON dividas.devedor = devedores.id

INNER JOIN recibos

ON recibos.id = parcelas.recibo

INNER JOIN acordos_parcelas

ON acordos_parcelas.id = recibos.acordo_parcela

INNER JOIN tipo_forma

ON acordos_parcelas.forma = tipo_forma.id

LEFT JOIN credito_anterior ON dividas.id = credito_anterior.divida AND recibos.id = credito_anterior.recibo

LEFT JOIN credito_restante ON dividas.id = credito_restante.divida AND recibos.id = credito_restante.recibo

WHERE

parcelas.recibo = 329312

 

 

Ao tirar as ligações do WHERE o SQL SERVER conseguiu (acredito eu, depois de tanto tentar), utilizar as 3 tabelas que já constavam anteriormente utilizando o comando INNER JOIN e fazendo com que executasse sem qualquer problema, retornando assim o resultado esperado.

 

 

 

Obrigado, eriva_br aí pela ajuda e paciência.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.