需求背景
假设我现在有四张表分别是订单表、订单商品表、发货表、和发货商品表,假设订单表ord_order,有字段id,order_no,商品表为ord_product,有字段order_id(订单 ID)和name(商品名称);发货商品表为ord_delivery_product,有字段delivery_id(发货单 ID)、sku_id(商品 ID);发货表为ord_delivery,有字段id(发货单 ID)delivery_no(发货单 编号)。
期望
查询出订单下各个商品的发货数据,没有发货的也要进行展示, 一个订单有两个商品, 一个订单有两个发货单, 但是这个发货单每次只发了一种商品, 所以按照需求应该展示为三条数据,展示如图
SELECT
o."id",
op.sku_id,
op."name" ,temp.delivery_no,,temp.delivered
FROM
FROM
ord_order o
LEFT JOIN ord_product op ON o.ID = op.order_id
LEFT JOIN (
SELECT
o.ID,
od.delivery_no,
odp.sku_id,
odp."name" ,odp.delivered
FROM
ord_order o
LEFT JOIN ord_delivery od ON o.ID = od.order_id
LEFT JOIN ord_delivery_product odp ON od.ID = odp.delivery_id
) temp ON o.ID=temp.ID
AND op.sku_id = temp.sku_id
WHERE
o.order_no = 'D20241022643731';