JOIN COM VARIOS ARGUMENTOS

CAIO.FR.SP 03/03/2014 22:13:15
#435487
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)
ASHKATCHUP 04/03/2014 20:06:09
#435516
Sim. Qualquer tipo de Join suporta vários argumentos para comparar com a query principal.
CAIO.FR.SP 04/03/2014 23:05:27
#435518
estranho, mais comigo só esta funcionando com 1 argumento, se eu colocar mais, da erro de join. você sabe o que pode ser?
TUNUSAT 05/03/2014 11:22:35
#435532
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.
ASHKATCHUP 05/03/2014 11:52:38
#435534
Qual banco de dados tu está usando, mestre?
CAIO.FR.SP 05/03/2014 16:58:14
#435549
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.
ASHKATCHUP 05/03/2014 17:25:31
#435551
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)

CAIO.FR.SP 05/03/2014 17:33:17
#435552
não entendi muito bem esse trecho Select Max(CodCliente), Max(CodEvento), Max(Referencia)
ASHKATCHUP 05/03/2014 19:48:35
#435560
Faz assim: posta uma parte do banco de dados ai que eu baixo e te ajudo.
ASHKATCHUP 06/03/2014 08:42:02
#435576
A tua SQL está com erros, Caio. Por isso ela não funciona.

->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.
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas