Difficulties in making select

-2

I'd like some help on how to solve the last 3 selects below.

Rememberingthatthereportsthatcontaintheitem"Total quantity" require the total quantity of the product taking into account all the requests 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 make the second one but did not quit

If you can help me, I'll be grateful.

link

    
asked by anonymous 19.12.2017 / 21:44

2 answers

0

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

The second result, I believe it would look like this (I did not identify the column that would be '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
    
19.12.2017 / 22:21
0

I think your JOIN itens_pedido itens ON pedido.id_pedido = itens.pedido_id_pedido should not 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 it 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
    
19.12.2017 / 22:18