UNIR 3 TABELAS NUM SELECT

WEBIER 09/04/2011 18:07:02
#370931
atualmente tenho a seguinte SQL:

SQL = [Ô]SELECT PEDIDOS_ITENS.COD_PRODUTO, PEDIDOS_ITENS.DESCRICAO as var_Desc, SUM(PEDIDOS_ITENS.QUANTIDADE) AS var_Qtda, PRECO, SUM(PRECO * QUANTIDADE) AS var_Total 

FROM PEDIDOS_ITENS LEFT JOIN PRODUTOS ON (PEDIDOS_ITENS.COD_PRODUTO = PRODUTOS.CODIGO)


WHERE (PRODUTOS.CATEGORIA = [ô][Ô] & cboCategoria.Text & [Ô][ô]) and Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô])

group by PEDIDOS_ITENS.COD_PRODUTO, PEDIDOS_ITENS.DESCRICAO, PEDIDOS_ITENS.PRECO[Ô]


é uma consulta onde me mostrar todos os produtos vendidos num mês... ele agrupa os produtos e me mostra a quantidade de cada um que foi vendido... ATé AI TUDO BEM!

agora meu cliente quer fazer consultas de vendas de produtos por tipo de pagamento, ou seja, À VISTA ou À PRAZO

Só que essa informação está em outra tabela, chamada PEDIDOS e o campo se chama TIPO_PAGAMENTO (é do tipo text)

então estou precisando relacionar essa terceira tabela ai no FROM

a ideia seria relacionar os campos PEDIDOS_ITENS.COD_PEDIDO = PEDIDOS.COD_PEDIDO

ai farei um IF assim:
[ô]FORMA DE PAGAMENTO
Dim TIPO As String
If optImprimirTodas.Value = True Then
TIPO = [Ô][Ô]
ElseIf optImprimirAvista.Value = True Then
TIPO = [Ô] AND PEDIDOS.TIPO_PAGAMENTO = [ô]À Vista[ô][Ô]
ElseIf optImprimirAprazo.Value = True Then
TIPO = [Ô] AND PEDIDOS.TIPO_PAGAMENTO = [ô]À Prazo[ô][Ô]
End If


e no WHERE eu colocaria assim:
WHERE (PRODUTOS.CATEGORIA = [ô][Ô] & cboCategoria.Text & [Ô][ô]) [Ô] & TIPO & [Ô] and Month(DATA) = [Ô] & cboMES.ListIndex + 1 & [Ô] AND (Year(DATA) = [Ô] & cboAno & [Ô]) 


notou a parada do [Ô] & TIPO & [Ô] ai no meio

então meu unico problema é relacionar as 3 tabelas.

como eu faço ?
SAMUKA 09/04/2011 18:51:36
#370934
Resposta escolhida
WEBIER, a idéia é essa:


FROM (tb1 LEFT JOIN (tb2 LEFT JOIN tb3 ON tb2.Cod = tb3.Cod) ON tb1.Cod = tb2.Cod)
WEBIER 09/04/2011 19:13:11
#370935
Citação:

:
WEBIER, a idéia é essa:


FROM (tb1 LEFT JOIN (tb2 LEFT JOIN tb3 ON tb2.Cod = tb3.Cod) ON tb1.Cod = tb2.Cod)



seri assim:

FROM (PRODUTOS LEFT JOIN (PEDIDOS_ITENS LEFT JOIN PEDIDOS ON PEDIDOS_ITENS.COD_PEDIDO = PEDIDOS.COD_PEDIDO) ON PRODUTOS.CODIGO = PEDIDOS_ITENS.COD_PRODUTO)
FOXMAN 09/04/2011 19:55:59
#370938
WEBIER, aqui tenho algo assim, porém não coloco na instrução FROM e sim no SELECT mesmo, a diferença é que coloco dois joins, podendo ser LEFT, RIGTH ou INNER.

veja exemplo :

select m.transid , m.itemcode,sum(m.qtde) as qtde,m.itemname,p.categoria, v.TipoPagamento 
from movprodsaida m
inner join produtos p on(m.itemcode = p.CODPRODUTO)
inner join vendas v on(v.ID = m.transid)
where v.TipoPagamento = [Ô]CHEQUE[Ô]
group by m.itemcode;


Ve se te ajuda, pois aki para mim funfa normal. No exemplo acima tenho as tabelas movprodsaida(movimento de saida de produtos), vendas, produtos.

Tópico encerrado , respostas não são mais permitidas