Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Ajuda numa consulta SQL


playnet

Pergunta

Boa tarde!

Gostaria de uma ajuda para finalizar uma consulta SQL, vou utilizar um exemplo fictício para descrever o que preciso.

 

SELECT tbCidades.nome as Cidade, tbFiliais.nome as Filial, tbProdutos.nome as NomeProduto

FROM cidades tbCidades, filiais tbFiliais, produtos tbProdutos, vendas tbVendas 

WHERE tbFiliais.idCidade=tbCidades.idCidade and tbProdutos.idFilial=tbFilial.idFilial and tbProdutos.idProduto=tbVendas.idProduto

and tbCidades.nome='Rio de Janeiro' and tbFiliais.nome='Copacabana'  and tbVendas.data='15/11/2017'

GROUP BY Cidade, Filial, NomeProduto

 

O que preciso: 

4ª coluna: Contar qtas vendas efetuadas da respectiva Cidade-Filial-Produto que tenham tbVendas.formapgto 'C' (cartão de crédito)  Nome da Coluna seria: VendasCartao

5ª coluna: Contar qtas vendas efetuadas da respectiva Cidade-Filial-Produto que tenham tb.Vendas.formapgto 'D' (dinheiro)                 Nome da Coluna seria: VendasDinheiro

6ª coluna: Contar qtas vendas efetuadas da respectiva Cidade-Filial-Produto independente da formapgto ou que tb.Vendas.formapgto in ('C', 'D')   Nome da Coluna seria: VendasTotal

 

Resultado Esperado:

 

Cidade                    Filial               NomeProduto       VendasCartao     VendasDinheiro      VendasTotal

Rio de Janeiro  Copacabana     Cadeira de Praia                4                               2                            6

Rio de Janeiro  Copacabana     Barraca de Praia                3                               0                            3

Rio de Janeiro  Copacabana     Mesa Plastico                    8                               6                            14

 

Já tentei usar de tudo... subqueries com select+count(tbVendas.idVenda), função, etc... e nada. Sempre pega na questão do group by.

Alguma sugestão?

 

Obrigado,

Alex

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Faça assim:

SELECT tbCidades.nome AS Cidade, tbFiliais.nome AS Filial, tbProdutos.nome AS NomeProduto,
SUM(IF(tbVendas.formapgto "C", 1,0)) AS VendasCartao,
SUM(IF(tbVendas.formapgto "D", 1,0)) AS VendasDinheiro,
SUM(IF(tbVendas.formapgto IN ('C',"D"), 1,0)) AS VendasTotal
FROM cidades tbCidades
INNER JOIN filiais tbFiliais ON tbFiliais.idCidade = tbCidades.idCidade
INNER JOIN produtos tbProdutos ON tbProdutos.idFilial = tbFilial.idFilial
INNER JOIN vendas tbVendas ON tbProdutos.idProduto = tbVendas.idProduto
WHERE  tbCidades.nome='Rio de Janeiro' AND tbFiliais.nome='Copacabana'  AND tbVendas.data='15/11/2017'
GROUP BY Cidade, Filial, NomeProduto

 

Link para o comentário
Compartilhar em outros sites

  • 0
55 minutos atrás, Denis Courcy disse:

Faça assim:


SELECT tbCidades.nome AS Cidade, tbFiliais.nome AS Filial, tbProdutos.nome AS NomeProduto,
SUM(IF(tbVendas.formapgto "C", 1,0)) AS VendasCartao,
SUM(IF(tbVendas.formapgto "D", 1,0)) AS VendasDinheiro,
SUM(IF(tbVendas.formapgto IN ('C',"D"), 1,0)) AS VendasTotal
FROM cidades tbCidades
INNER JOIN filiais tbFiliais ON tbFiliais.idCidade = tbCidades.idCidade
INNER JOIN produtos tbProdutos ON tbProdutos.idFilial = tbFilial.idFilial
INNER JOIN vendas tbVendas ON tbProdutos.idProduto = tbVendas.idProduto
WHERE  tbCidades.nome='Rio de Janeiro' AND tbFiliais.nome='Copacabana'  AND tbVendas.data='15/11/2017'
GROUP BY Cidade, Filial, NomeProduto

 

Perfeito Mestre Denis! Funcionou exatamente como eu queria. Eu estava tentando algo parecido, mas através do count, sei lá porque haha. Muito Obrigado pela ajuda super rápida!

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...