我有两个名为order
和orderdetail
的表格,其关键字为order_id
我想查询数据库以获取每个订单的总计。
order
表包含字段order_id
,customer_name
等。
order_detail
表包含字段id (primary key)
,order_number (foreign key)
,product
,qty
,price
我想要一个像这样的字段的结果:
order_id
,grand_total
。
我为order_detail
创建了一个视图,如下所示:
CREATE OR REPLACE VIEW orderTotal AS
SELECT
order_number,
Round(sum(qty * price),2) as grandTotal
FROM order_detail t group by order_number;
效果很好,但有一个问题。某些订单在order_detail
中没有参考数据,然后该视图未列出该记录。我怎么解决这个问题?请给我一个示例查询。
可能需要多个SQL查询,但我们可以将其构建为视图吗?
例如,我需要这样的数据:
order_id grandTotal
1 200
2 0 // when data is missing
3 150.35
答案 0 :(得分:1)
如果你有父记录而没有孩子,它可以帮到你:
SELECT
order.order_id,
coalesce(Round(sum(order_detail.qty * order_detail.price),2),0) as grandTotal
FROM order
LEFT join order_detail on order_detail.order_number = order.order_id
GROUP BY order.order_id