Combina 4 tabelas relacionais (Pedidos, Clientes, Itens e Produtos) com cálculo de subtotal por linha em SQL nativo.
| id_pedido | nome_cliente | uf | nome_produto | qtd | preco_unitario | subtotal | status |
|---|---|---|---|---|---|---|---|
| 1 | Ana Sousa | MG | PLA Preto 1kg | 2 | R$ 89,90 | R$ 179,80 | concluido |
| 1 | Ana Sousa | MG | Bico Extrusor 0.4mm | 1 | R$ 35,00 | R$ 35,00 | concluido |
| 2 | Helio Marques | MG | Bico Extrusor 0.4mm | 5 | R$ 35,00 | R$ 175,00 | concluido |
| 3 | Carlos Lima | SP | PLA Preto 1kg | 1 | R$ 89,90 | R$ 89,90 | pendente |
| 4 | Ana Sousa | MG | PETG Branco 1kg | 3 | R$ 95,50 | R$ 286,50 | concluido |
| 5 | Beatriz Rocha | BA | Secador de Filamento | 1 | R$ 299,90 | R$ 299,90 | concluido |
| 6 | Rodrigo Ramos | PR | Sensor Nivelamento Auto | 2 | R$ 149,00 | R$ 298,00 | concluido |
| 7 | Fernanda Costa | RS | Filamento TPU Flexível 1kg | 4 | R$ 139,90 | R$ 559,60 | concluido |
| 8 | Carlos Lima | SP | Alicate de Precisão | 3 | R$ 28,50 | R$ 85,50 | cancelado |
| 9 | Beatriz Rocha | BA | Impressora 3D CoreXY K1 | 1 | R$ 3.450,00 | R$ 3.450,00 | concluido |
| 10 | Lucas Mendes | SP | PLA Preto 1kg | 5 | R$ 89,90 | R$ 449,50 | concluido |
$result = DB::query("
SELECT
p.id_pedido,
c.nome_cliente,
c.uf,
pr.nome_produto,
i.qtd,
i.preco_unitario,
ROUND(i.qtd * i.preco_unitario, 2) AS subtotal,
p.status
FROM pedidos p
INNER JOIN clientes c ON c.id_cliente = p.id_cliente
INNER JOIN itens_pedido i ON i.id_pedido = p.id_pedido
INNER JOIN produtos pr ON pr.id_produto = i.id_produto
ORDER BY p.id_pedido ASC, subtotal DESC
");
[
{
"id_pedido": 1,
"nome_cliente": "Ana Sousa",
"uf": "MG",
"nome_produto": "PLA Preto 1kg",
"qtd": 2,
"preco_unitario": 89.9,
"subtotal": 179.8,
"status": "concluido"
},
{
"id_pedido": 1,
"nome_cliente": "Ana Sousa",
"uf": "MG",
"nome_produto": "Bico Extrusor 0.4mm",
"qtd": 1,
"preco_unitario": 35,
"subtotal": 35,
"status": "concluido"
},
{
"id_pedido": 2,
"nome_cliente": "Helio Marques",
"uf": "MG",
"nome_produto": "Bico Extrusor 0.4mm",
"qtd": 5,
"preco_unitario": 35,
"subtotal": 175,
"status": "concluido"
},
{
"id_pedido": 3,
"nome_cliente": "Carlos Lima",
"uf": "SP",
"nome_produto": "PLA Preto 1kg",
"qtd": 1,
"preco_unitario": 89.9,
"subtotal": 89.9,
"status": "pendente"
},
{
"id_pedido": 4,
"nome_cliente": "Ana Sousa",
"uf": "MG",
"nome_produto": "PETG Branco 1kg",
"qtd": 3,
"preco_unitario": 95.5,
"subtotal": 286.5,
"status": "concluido"
},
{
"id_pedido": 5,
"nome_cliente": "Beatriz Rocha",
"uf": "BA",
"nome_produto": "Secador de Filamento",
"qtd": 1,
"preco_unitario": 299.9,
"subtotal": 299.9,
"status": "concluido"
},
{
"id_pedido": 6,
"nome_cliente": "Rodrigo Ramos",
"uf": "PR",
"nome_produto": "Sensor Nivelamento Auto",
"qtd": 2,
"preco_unitario": 149,
"subtotal": 298,
"status": "concluido"
},
{
"id_pedido": 7,
"nome_cliente": "Fernanda Costa",
"uf": "RS",
"nome_produto": "Filamento TPU Flexível 1kg",
"qtd": 4,
"preco_unitario": 139.9,
"subtotal": 559.6,
"status": "concluido"
},
{
"id_pedido": 8,
"nome_cliente": "Carlos Lima",
"uf": "SP",
"nome_produto": "Alicate de Precisão",
"qtd": 3,
"preco_unitario": 28.5,
"subtotal": 85.5,
"status": "cancelado"
},
{
"id_pedido": 9,
"nome_cliente": "Beatriz Rocha",
"uf": "BA",
"nome_produto": "Impressora 3D CoreXY K1",
"qtd": 1,
"preco_unitario": 3450,
"subtotal": 3450,
"status": "concluido"
},
{
"id_pedido": 10,
"nome_cliente": "Lucas Mendes",
"uf": "SP",
"nome_produto": "PLA Preto 1kg",
"qtd": 5,
"preco_unitario": 89.9,
"subtotal": 449.5,
"status": "concluido"
}
]
id_cliente (INTEGER PK)nome_cliente (TEXT)uf (TEXT)cidade (TEXT)vip (INTEGER 0|1)saldo_credito (REAL)id_produto (INTEGER PK)id_categoria (INTEGER FK)nome_produto (TEXT)preco (REAL)estoque (INTEGER)pedidos.id_pedido (INTEGER PK)pedidos.id_cliente (INTEGER FK)pedidos.status (TEXT)itens_pedido.id_item (INTEGER PK)itens_pedido.qtd (INTEGER)itens_pedido.preco_unitario (REAL)