Difficulties in making select

Asked

Viewed 56 times

-2

Wanted a help on how to solve the last 3 selects down.

inserir a descrição da imagem aqui

Recalling that the reports that contain the item "Total quantity" demand the total quantity of the product taking into account all the orders made.

SELECT pedido.horario_pedido AS horario,
    pedido.nome_cliente AS nome,
    nome_pedido.lista_pedido AS pedido,
    query_total_preco.valor_total,
    contato???
FROM
        pedido
    JOIN
        itens_pedido itens
    ON
        pedido.id_pedido
        =
        itens.pedido_id_pedido
    JOIN
(
SELECT
    pedido.id_pedido AS id_pedido,
    string_agg(produto.nome,', ') AS lista_pedido
FROM
    itens_pedido pedido
    JOIN
    produto
    ON
    pedido.produto_id_produto = produto.id_produto
GROUP BY
    pedido.id_pedido
) AS nome_pedido

ON
    pedido.id_pedido = nome_pedido.id_pedido


JOIN

(SELECT pedido_id_pedido AS id_pedido,
    SUM(valor_total) AS valor_total
FROM
    itens_pedido
GROUP BY (pedido_id_pedido) ) AS query_total_preco

ON

nome_pedido.id_pedido = query_total_preco.id_pedido

I even started trying to do the second but don’t leave

If you could help me I’d be grateful

inserir a descrição da imagem aqui

https://jsfiddle.net/dc2rxmgn/

  • Possible duplicate of Summation in SQL

  • @It doesn’t seem duplicate.

  • puts in sqlFiddle... does not have the structure of tables...

  • just a minute I put

  • the structure of the bank and the fiddle

  • Rsrs, the fiddle, has to be in the Sqlfiddle... but...

  • how does it work?

  • on the one hand, puts the code of creation of tables and Inserts, build in the schema, and on the other hand, realizes the queries

  • Dude, can you open a chat between us?

  • @Gabrielfalieri You must have at least 15 points to participate in chats on this site.

Show 5 more comments

2 answers

0

I think your JOIN itens_pedido itens ON pedido.id_pedido = itens.pedido_id_pedido shouldn’t be there.

It is important to keep different names for the different tables consulted to avoid confusion, especially when the same table is consulted more than once in different ways.

So, I came to this SQL here below, although I believe that should give to simplify more.

SELECT
    a.horario_pedido AS horario,
    a.nome_cliente AS nome,
    c.lista_pedido AS pedido,
    d.valor_total
FROM pedido a
-- INNER JOIN itens_pedido b ON a.id_pedido = b.pedido_id_pedido
INNER JOIN (
    SELECT
        e.pedido_id_pedido AS id_pedido,
        GROUP_CONCAT(f.nome SEPARATOR ', ') AS lista_pedido
    FROM itens_pedido e
    INNER JOIN produto f ON e.produto_id_produto = f.id_produto
    GROUP BY e.pedido_id_pedido
) AS c ON a.id_pedido = c.id_pedido
INNER JOIN (
    SELECT
        g.pedido_id_pedido AS id_pedido,
        SUM(g.valor_total) AS valor_total
    FROM itens_pedido g
    GROUP BY g.pedido_id_pedido
) AS d ON c.id_pedido = d.id_pedido
  • STRING_AGG does not exist. is mysql D;

  • @Gabrielfalieri So try with GROUP_CONCAT. I edited the answer.

  • Anyone help with report 4?

0


I will try to do the query without validating it, I am without mysql here and without fiddle too... make a test

The second result, I believe would look like this (I did not identify the column that would be the 'Contact'):

2-

Select
    p.horario_pedido,
    p.nome_cliente,
    GROUP_CONCAT(concat(ip.quantidade,pp.tipo_medicao,' - ',pp.nome)) as descricao,
    sum(ip.valor_total) as total
from pedido p
inner join itens_pedido ip on ip.pedido_id_pedido = p.id_pedido
inner join produto pp on pp.id_produto = ip.produto_id_produto
group by p.horario_pedido, p.nome_cliente

3-

Select
    s.nome_setor,
    pp.nome,
    sum(ip.quantidade) as quantidade_total,
    pp.tipo_medicao
from pedido p 
inner join setor s on s.id_setor = p.setor_id_setor
inner join itens_pedido ip on ip.pedido_id_pedido = p.id_pedido
inner join produto pp on pp.id_produto = ip.produto_id_produto
group by s.nome_setor, pp.nome,pp.tipo_medicao

4-

select
    p.horario_pedido,
    p.nome_cliente,
    GROUP_CONCAT(concat(ip.quantidade,' ',pp.nome)) as pedido,
    s.nome_setor
from pedido p
inner join itens_pedido ip on ip.pedido_id_pedido = p.id_pedido
inner join produto pp on pp.id_produto = ip.produto_id_pedido
inner join setor s on s.id_setor = p.setor_id_setor
group by p.horario_pedido, p.nome_cliente, s.nome_setor
  • was perfect bro

  • as you make the other selects, I put here. If another user responds with more information, feel free to uncheck the answer =]

  • the other 2 does not happen to give a moral no?

  • I changed it...

  • Dude, up to the perfect 3, rolls do the 4 tb?

  • 4 did not work ?

  • I just need him to finish my Ports

  • I didn’t realize you had put

  • it worked yes, thank you very much

Show 4 more comments

Browser other questions tagged

You are not signed in. Login or sign up in order to post.