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!