UNIR 3 TABELAS NUM SELECT
atualmente tenho a seguinte SQL:
é 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:
e no WHERE eu colocaria assim:
notou a parada do [Ô] & TIPO & [Ô] ai no meio
então meu unico problema é relacionar as 3 tabelas.
como eu faço ?
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 ?
WEBIER, a idéia é essa:
FROM (tb1 LEFT JOIN (tb2 LEFT JOIN tb3 ON tb2.Cod = tb3.Cod) ON tb1.Cod = tb2.Cod)
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)
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 :
Ve se te ajuda, pois aki para mim funfa normal. No exemplo acima tenho as tabelas movprodsaida(movimento de saida de produtos), vendas, produtos.
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