JOIN COM VARIOS ARGUMENTOS
Galera alguém sabe me falar se o join (left join no meu caso) suporta mais de um argumento?
exemplo:
Select C.*, B.ValorBaixado
From TabContaReceber C
Left Join (
Select CodCliente, CodEvento, Referencia, Sum(ValorBaixado) as ValorBaixado
From TabContaReceberBaixa
Group By CodCliente, CodEvento, Referencia) B on (C.CodCliente = B.CodCliente and C.CodEvento = B.CodEvento and C.Referencia = B.Referencia)
exemplo:
Select C.*, B.ValorBaixado
From TabContaReceber C
Left Join (
Select CodCliente, CodEvento, Referencia, Sum(ValorBaixado) as ValorBaixado
From TabContaReceberBaixa
Group By CodCliente, CodEvento, Referencia) B on (C.CodCliente = B.CodCliente and C.CodEvento = B.CodEvento and C.Referencia = B.Referencia)
Sim. Qualquer tipo de Join suporta vários argumentos para comparar com a query principal.
estranho, mais comigo só esta funcionando com 1 argumento, se eu colocar mais, da erro de join. você sabe o que pode ser?
CAIO_FR_SP,
Desculpe se não tiver nada a haver, mas estou achando estranho seu [Ô]Group By[Ô].
Tipo, se você agrupar mais de um registro pode fazer o [Ô]Left Join[Ô] na boa?
Tem como colocar o [Ô]Group By[Ô] no [Ô]Select [Ô] fora do [Ô]Left Join[Ô]?
Dá uma olhada nestes exemplos:
http://social.msdn.microsoft.com/Forums/pt-BR/844f422b-de1a-4bc0-9f63-6da2bc982abb/como-usar-group-by-com-left-join?forum=520
http://stackoverflow.com/questions/5873205/sql-server-query-left-join-sum-and-group-by-and-im-stumped
[][ô]s,
Tunusat.
Desculpe se não tiver nada a haver, mas estou achando estranho seu [Ô]Group By[Ô].
Tipo, se você agrupar mais de um registro pode fazer o [Ô]Left Join[Ô] na boa?
Tem como colocar o [Ô]Group By[Ô] no [Ô]Select [Ô] fora do [Ô]Left Join[Ô]?
Dá uma olhada nestes exemplos:
http://social.msdn.microsoft.com/Forums/pt-BR/844f422b-de1a-4bc0-9f63-6da2bc982abb/como-usar-group-by-com-left-join?forum=520
http://stackoverflow.com/questions/5873205/sql-server-query-left-join-sum-and-group-by-and-im-stumped
[][ô]s,
Tunusat.
Qual banco de dados tu está usando, mestre?
ASHKATCHUP, é um ACCESS.
é um sistema que peguei para refazer. o antigo desenvolvedor sumiu... e deixou o software com erros e sem manutenção, agora estou montando o meu, mas preciso manter ou migrar os dados desse banco, e isto esta me dando muito trabalho, para ter noção o cara ao invés de usar um campo autonumeração, ele criava uma tabela com um unico campo (codigo), apara cada tabela de cadastro, e ia incrementando essa tabela para depois usar o codigo na tabela do cadastro ex.:
TabCliente
CodCliente Número
Nome Texto
...
TabClienteCodigo
Codigo Número
ate agora não entendi o porque dessa logica.
é um sistema que peguei para refazer. o antigo desenvolvedor sumiu... e deixou o software com erros e sem manutenção, agora estou montando o meu, mas preciso manter ou migrar os dados desse banco, e isto esta me dando muito trabalho, para ter noção o cara ao invés de usar um campo autonumeração, ele criava uma tabela com um unico campo (codigo), apara cada tabela de cadastro, e ia incrementando essa tabela para depois usar o codigo na tabela do cadastro ex.:
TabCliente
CodCliente Número
Nome Texto
...
TabClienteCodigo
Codigo Número
ate agora não entendi o porque dessa logica.
Se não me engano, o Access não suporta GROUPBY em subquerie. Faz tempo que deixei de trabalhar com VB6 e Access, mas nós usávamos uma gambiarra:
Select C.*, B.ValorBaixado
From TabContaReceber C
Left Join (
Select Max(CodCliente), Max(CodEvento), Max(Referencia), Sum(ValorBaixado) as ValorBaixado
From TabContaReceberBaixa
Group By CodCliente, CodEvento, Referencia) B on (C.CodCliente = B.CodCliente and C.CodEvento = B.CodEvento and C.Referencia = B.Referencia)
não entendi muito bem esse trecho Select Max(CodCliente), Max(CodEvento), Max(Referencia)
Faz assim: posta uma parte do banco de dados ai que eu baixo e te ajudo.
ASHKATCHUP, segue o link
https://mega.co.nz/#!VRICSSjS!oGuw6z4uz73gBOBYWT1BqF_xE7K0KGqxPzx2WoFCrko
https://mega.co.nz/#!VRICSSjS!oGuw6z4uz73gBOBYWT1BqF_xE7K0KGqxPzx2WoFCrko
A tua SQL está com erros, Caio. Por isso ela não funciona.
->A tabela TabContaReceberBaixa não existe;
->Não se pode dar um alias igual a nome de campo que existe
Arrumando os dois problemas acima, a query executa perfeitamente.
->A tabela TabContaReceberBaixa não existe;
Select CodCliente, CodEvento, Referencia, Sum(ValorBaixado) as ValorBaixado
From TabContaReceberBaixa
->Não se pode dar um alias igual a nome de campo que existe
Sum(ValorBaixado) as ValorBaixado
Arrumando os dois problemas acima, a query executa perfeitamente.
Tópico encerrado , respostas não são mais permitidas