如何在mysql中跨多个一对多关系进行选择

x0fgdtte  于 2021-06-20  发布在  Mysql
关注(0)|答案(0)|浏览(181)

我有以下一系列的表格

Items - contains all items
Purchase_order - 1:m purchased_items
purchased_items - 1:m receipts
receipts - 1:m received_items
recieved_items - 1:m shipments
shipments - 1:m shipped items

我需要列出所有采购订单的全部详细信息,因为采购订单包含采购项目,而采购项目又会有多行收据等等。但是所有的采购订单可能没有收据,收据可能没有采购订单的所有项目,所以我尝试使用 LEFT JOIN 从开始 purchase_order 按上述顺序移动。问题是 purchase_order 6个项目将产生6个副本 receipt 每一个都会产生多个副本 received_items 行等等。。。
我知道分组解决不了这个问题,请给我指出正确的方向。
采购订单:

id | name
----------
1  | po1

采购项目

id | purchase_order_id | item_id
--------------------------------
1  | 1                 | 1
2  | 1                 | 4
3  | 1                 | 5
4  | 1                 | 6

收据

id | name | purchase_order_id
------------------------------
1  | rc01 | 1
2  | rc02 | 1

收到的\u项

id | receipt_id | item_id
--------------------------------
1  | 1          | 1
2  | 1          | 4
3  | 2          | 5
4  | 2          | 6

装运

id | name | receipt_id
------------------------------
1  | shp01 | 1
2  | shp02 | 1
3  | shp03 | 2
4  | shp04 | 2

已装运的物品

id | shipment_id | item_id
--------------------------------
1  | 1          | 1
2  | 2          | 4
3  | 3          | 5
4  | 4          | 6

预期产量

purchase_order_item | purchase_order | receipt | shipment
----------------------------------------------------------
1                   | po1            | rc01    | shp01
2                   | po1            | rc01    | shp02
3                   | po1            | rc02    | shp03
4                   | po1            | rc02    | shp04

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题