MySQL查询获取子表和主表的数据

时间:2013-10-30 19:51:47

标签: mysql sql select

我有两个名为orderorderdetail的表格,其关键字为order_id 我想查询数据库以获取每个订单的总计。

order表包含字段order_idcustomer_name等。

order_detail表包含字段id (primary key)order_number (foreign key)productqtyprice

我想要一个像这样的字段的结果:

order_idgrand_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 

1 个答案:

答案 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