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 可能導致空值(如