De acordo com o diagrama acima (banco MySQL):
Preciso que mostre a quantidade de produtos de um mesmo modelo para único pedido.
Enfim, uma lista capaz de identificar quantos equipamentos do mesmo modelo foram enviados ao cliente, tendo em comum o número_pedido.
Já tentei $sql=“SELECT data_envio, nota_fiscal,nome_cliente, modelo.nome,conteudo.quantidade FROM conteudo,equipamento, caixa, pedido,cliente, modelo WHERE pedido.numero_pedido = conteudo.numero_pedido AND cliente.idcliente = pedido.cliente_idcliente AND modelo.idmodelo = conteudo.modelo_idmodelo GROUP BY nota_fiscal”;
Grato a quem pode ajudar.
Quantidade = soma de itens, não? Então, o ideal seria usar sum, ou count (creio que não é esse o caso).
Negativo, a quantidade se refere quantos equipamentos existe de um determinado modelo que pertence a certo numero de pedido.
Por favor, me ajude como faz esse comando SQL. Preciso terminar o projeto, só falta emitir esse relatório
Como o darlan disse, isso é um sum (se é pra somar as quantidades em uma determinada coluna) ou count (se é pra contar quantos registros atendem a um determinado critério).
Supondo que você quer a soma da coluna quantidade na tabela Conteudo, e só com base no diagrama (sem testar, obviamente), a base seria algo assim:
select modelo.nome,
sum(conteudo.quantidade) as quantidade,
from modelo, conteudo, cliente, pedido
where pedido.numero_pedido = conteudo.numero_pedido
and cliente.idcliente = pedido.cliente_idcliente
and modelo.idmodelo = conteudo.modelo_idmodelo
and pedido.numero_pedido = ?
group by modelo.idModelo, modelo.nome
A partir daí, adicione as colunas conforme precisar, não esquecendo de adicionar no group by.
Abraço.
Falai @dandrade78 blz, cara esse seu DER ta faltando o relacionamento entre a tabela Pedido e Conteudo apesar de existir o campo numero_pedido no SQL ela não esta sendo considerada FK, se isso eh um projeto a ser entregue seria interessante deixar tudo o mais correto possível.
Acredito que o SQL abaixo vai resolver ou senão vai ajuda-lo a resolver seu problema. segue:
SELECT con.modelo_idmodelo,SUM(con.quantidade) 'Quantidade' FROM Pedido ped
INNER JOIN Conteudo con ON ped.numero_pedido = con.numero_pedido
WHERE ped.numero_pedido = 666
GROUP BY con.modelo_idmodelo
Abraços
Max
Continuando… Coloquei a estrututura e dados no sqlfiddle Estruturas SQL
SQL atual : SELECT data_envio, nota_fiscal,nome_cliente, modelo.nome,conteudo.quantidade FROM conteudo,equipamento, caixa, pedido,cliente, modelo WHERE pedido.numero_pedido = conteudo.numero_pedido AND cliente.idcliente = pedido.cliente_idcliente AND modelo.idmodelo = conteudo.modelo_idmodelo GROUP BY nota_fiscal
Ainda, não apresenta resultado correto:
Resultado desejado, na tabela abaixo:
data_envio nota_fiscal nome_cliente nome quantidade
null 8971 Loja 1 Impressora 3
null 8971 Loja 1 Mini CPU 3
null 8972 Loja 2 Mouse 1
null 8972 Loja 2 Teclado 1
null 8972 Loja 2 CPU 1
O link que você colocou não tem muito a ver com os dados na questão aqui. É o link correto?
Esse “resultado desejado”, é o que você espera obter com esse select todo, ou é o resultado do seu select atual, que está diferente do que você espera?
Por que está tentando agrupar por nota_fiscal? Você não pode usar um agrupamento sem uma função de agregação (sum, avg, count). E, até o momento, você tinha dito que queria agrupar por modelo, não por nota. Chegou a testar as soluções oferecidas?
Seria bom você definir mais claramente quais dados você tem (um conjunto resumido, com 1 ou 2 pedidos, com os dados em todas as tabelas envolvidas) e qual resultado você quer obter com esse select. Se possível, atualize o SQLFiddle.
Abraço.
Consegui, obrigado por responder, me ajudou a chegar na solução.
SELECT data_envio, nota_fiscal,nome_cliente, modelo.nome,conteudo.quantidade FROM conteudo,equipamento, caixa, pedido,cliente, modelo WHERE pedido.numero_pedido = conteudo.numero_pedido AND cliente.idcliente = pedido.cliente_idcliente AND modelo.idmodelo = conteudo.modelo_idmodelo GROUP BY modelo.nome
Pra ficar perfeito, falta apenas ordenar em ordem CRESCENTE por nota fiscal