Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Porque não faz a ordenação?

Porque o código abaixo não faz a ordenação pela coluna ID dos pedidos?

select p.id as ID_pedido, c.nome as Cliente, sum(ip.precounitario) as Total_Pedido
from pedidos p
join clientes c on p.idcliente = c.id
join itenspedidos ip on p.id = ip.idpedido
group by p.id, c.nome
order by p.id

Saída da consulta:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

1 resposta
solução!

Olá, Olivio! Tudo bem?

O seu código não está ordenando corretamente pela coluna ID_pedido porque a coluna ID_pedido está sendo tratada como texto em vez de número. Quando o SQL ordena valores textuais, ele faz isso lexicograficamente (ou seja, como se estivesse ordenando palavras em um dicionário), o que resulta na ordenação que você está vendo.

Para resolver isso, você pode converter a coluna ID_pedido para um tipo numérico na cláusula ORDER BY. Vou deixar abaixo um exemplo de como você pode fazer isso:

select p.id as ID_pedido, c.nome as Cliente, sum(ip.precounitario) as Total_Pedido
from pedidos p
join clientes c on p.idcliente = c.id
join itenspedidos ip on p.id = ip.idpedido
group by p.id, c.nome
order by cast(p.id as unsigned)

→ Ao usar cast(p.id as unsigned), você está convertendo a coluna p.id para um tipo numérico sem sinal, o que deve resolver o problema de ordenação.

Espero ter ajudado!

Abraço ✨

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!