SQL 查询中涉及的表及其作用说明:
涉及的数据库表
表名 | 别名/用途 | 关联关系 |
---|---|---|
dbo.s_order | SO (主表) | 存储订单主信息(订单号、日期、客户等) |
dbo.s_orderdetail | SoD (订单明细) | 通过 billid = SO.billid 关联主订单,存储订单明细(产品、数量、价格等) |
dbo.l_goods | FG (货品信息) | 通过 goodsid = SoD.goodsid 关联订单明细,存储货品编码、名称、规格等 |
dbo.l_employ | Employee (业务员信息) | 通过 empid = SO.empid 关联订单主表,存储业务员姓名 |
dbo.l_trader | BP (客户信息) | 通过 traderid = SO.traderid 关联订单主表,存储客户编码、名称等 |
dbo.l_area | Area (客户所属地区)Area_A (上级地区) | Area 关联客户表 BP.areaid ,Area_A 通过 Area.parentid 自关联层级地区 |
dbo.l_brand | brand (品牌信息) | 通过 brandid = FG.brandid 关联货品表,存储品牌名称 |
dbo.l_goodsunit | SO1 (货品单位信息) | 通过 goodsid = FG.goodsid 关联货品表,筛选基础单位(isbase=1, unittype=0 ) |
l_tradertype | BPTYPE (客户类型) | 通过 tradetypeid = BP.tradetypeid 关联客户表,存储客户类型名称 |
i_goodsc | SC (货品调价信息) | 通过 code = FG.code 关联货品表,存储调价日期和价格 |
I_AREAP | areap (2024省区映射) | 通过 code = BP.code 关联客户表,存储省区信息 |
关键字段说明
-
订单主表 (
s_order
):billdate
:订单日期billcode
:订单号traderid
:客户ID(关联l_trader
)
-
订单明细表 (
s_orderdetail
):quantity
:订单数量taxprice
:含税单价userdef1
:订单行类型(用于计算销售业绩、其他收入等)
-
客户表 (
l_trader
):areaid
:客户所属地区ID(关联l_area
)code
:客户编码(关联I_AREAP
)
-
货品表 (
l_goods
):brandid
:品牌ID(关联l_brand
)guserdef4/guserdef6/guserdef7
:自定义字段(板块、产品系列、品牌字号)
关联关系示意图
s_order (SO)
├── s_orderdetail (SoD)
│ └── l_goods (FG)
│ ├── l_brand (brand)
│ └── l_goodsunit (SO1)
├── l_employ (Employee)
├── l_trader (BP)
│ ├── l_area (Area)
│ │ └── l_area (Area_A) -- 自关联上级地区
│ ├── l_tradertype (BPTYPE)
│ └── I_AREAP (areap)
└── i_goodsc (SC) -- 通过货品编码关联
需要注意的问题
-
表别名冲突:
l_area
表被使用了两次(Area
和Area_A
),用于实现地区层级关系。
-
重复的 CASE 逻辑:
SoD.userdef1
的WHEN '合同物料'
条件重复出现,需确认是否为逻辑错误。
-
LEFT JOIN 风险:
- 部分 LEFT JOIN 可能导致空值(如
Employee
表未关联到数据时,业务员字段为 NULL)。
- 部分 LEFT JOIN 可能导致空值(如