51CTO下载-1-SQL实战练习
PL/SQL的DQL实战练习
编制人员:
创建日期:
目录
数据结构1 (1)
实战练习2 (3)
练习一
2.1 (5)
2.2 (5)
练习二
练习三
2.3 (5)
1数据结构
T_Order(订单)
字段名称类型说明
Order_ID 订单ID NUMBER 主键
Order_No 订单号VARCHAR2 唯一
Customer 客户VARCHAR2 Sales 业务员VARCHAR2
T_OrderDetail(订单明细)
字段名称类型说明
OrderDetail_ID 订单明细ID NUMBER 主键
Order_ID 订单ID NUMBER 外键,关联T_Order的
Order_ID字段Product 产品VARCHAR2 Quantity 订货数量NUMBER
T_Produce(生产单)
字段名称类型说明
Produce_ID 生产单ID NUMBER 主键
Produce_No 生产单号VARCHAR2 唯一
Customer 客户VARCHAR2 Planner 排产员VARCHAR2
T_ProduceDetail(生产单明细)
字段名称类型说明
ProduceDetail_ID 生产单明细ID NUMBER 主键
Produce_ID 生产单ID NUMBER 外键,关联T_Produce的
Produce_ID字段OrderDetail_ID 订单明细ID NUMBER 外键,关联T_OrderDetail
的OrderDetail_ID字段Order_ID 订单ID NUMBER 外键,关联T_Order的
Order_ID字段Quantity 排产数量NUMBER
2业务实例讲解
2.1业务简述
业务员根据客户的订货需要制定订货单,计划人员根据生产情况将未排产的订货单灵活地安排到不同的生产单上。
关键的业务数据说明:
可以将多张订货单里的部分或全部订货明细安排到同一张生产单里,并且一张生产单里安排的订货明细都是同一个客户的
2.2业务实例
订单号:ORD_01
客户:C1
产品订货数量
A 100
B 150
订单号:ORD_02
客户:C1
产品订货数量
A 200
C 50
订单号:ORD_03
客户:C2
产品订货数量
B 150
C 300
生产单号:PRD_01
客户:C1
订单号产品排产数量
100
ORD_01 A
100
ORD_01 B
生产单号:PRD_02
客户:C1
订单号产品排产数量
50
ORD_01 B
ORD_02 B
80
40
ORD_02 C
生产单号:PRD_03
客户:C2
订单号产品排产数量
200
ORD_03 C
一、统计订单明细的每种产品的已排产数量
订单号产品订货数量已排产数量
ORD_01 A 100 100 ORD_01 B 150 150 ORD_02 A 200 80 ORD_02 C 50 40 ORD_03 B 150 0 ORD_03 C 300 200
二、订单号是ORD_02的订货明细列表
产品订货数量已排产数量
A 200 80
C 50 40
三、列表显示未完全排产的订单明细
假如在编辑生产单PRD_03时,需要再显示未完全排产的订单明细,列表如下所示:
订单号产品订货数量已排产数量
ORD_02 A 200 80 ORD_02 C 50 40 ORD_03 B 150 0 ORD_03 C 300 0
3实战练习
3.1练习一
要求:请写出一条Select语句,分别统计订单明细的每种产品的已排产数量,输出
结果包含的列信息有:订单号、产品、订货数量、已排产数量。
注意:一张订单里可能存在两个相同产品的不同订货数量。
3.2练习二
要求:请写出一条Select语句,显示订单号是ORD00002108的订货明细列表,列表
信息包括:产品、订货数量、已排产数量。
3.3练习三
业务说明:假设用户使用生产单模块制定一张单号为PD00001101的生产单,为了
方便用户在这张生产单中引入某个客户待生产的订单,系统提供了一个能显示了所
有客户的未完全排产的订单明细列表,用户可以在列表中选择相同客户的任何订单
明细,引入到生产单中。
要求:请写出一条Select语句,显示所有客户的未完全排产的订单明细,列表信息
包括:订单号、产品、订货数量、已排产数量。
注:
1、“未完全排产”是指订单明细里的产品订货数量 > 已排产数量
2、“已排产数量”是不包含本张生产单PD00001101的排产数量