Query with join

1

I have a problem in the query to generate a report. I made a JOIN of the ordering table (which will get the report) with the table of customers and products. Until then everything worked, but he hardly shows all the requests, only shows the first. At the moment I have about 3 requests related to the tables. Look at the code:

SELECT pedidos_id,
       pedidos.cliente_id,
       pedidos.produto_id,
       clientes.nome AS nome_cliente,
       produtos.nome AS nome_produto,
       pedidos.data,
       pedidos.frete,
       pedidos.quantidade,
       pedidos.total,
       SUM(pedidos.total) as sub_total
  FROM pedidos
       INNER JOIN clientes ON pedidos.cliente_id = clientes.clientes_id
       INNER JOIN produtos ON pedidos.produto_id = produtos.produtos_id
 ORDER BY clientes.nome

What's wrong with the code?

    
asked by anonymous 17.11.2017 / 12:58

2 answers

2

Make sure you have columns with different values ... obs: fields in YELLOW

you can not use a SUM aggregation function with different values in the rows.

NOTE: In this case the SUM column would be deleted and the summation would be added inside the report.

    
17.11.2017 / 15:10
1

Make a Group by of all non-aggregated fields, the way it is it is summing all the requests in a single record:

SELECT pedidos_id  
     , pedidos.cliente_id  
     , pedidos.produto_id  
     , clientes.nome AS nome_cliente  
     , produtos.nome AS nome_produto  
     , pedidos.data  
     , pedidos.frete  
     , pedidos.quantidade  
     , pedidos.total  
     , SUM(pedidos.total) as sub_total  
  FROM pedidos  
 INNER JOIN clientes ON pedidos.cliente_id = clientes.clientes_id  
 INNER JOIN produtos ON pedidos.produto_id = produtos.produtos_id  
 GROUP BY pedidos_id  
        , pedidos.cliente_id  
        , pedidos.produto_id  
        , clientes.nome
        , produtos.nome
        , pedidos.data  
        , pedidos.frete  
        , pedidos.quantidade  
        , pedidos.total  
 ORDER BY clientes.nome
    
17.11.2017 / 13:05