id、Workfee(工時費)id、Aid(外鍵關聯 A.id)、chanpinid(產品 ID)、shuliang(數量)id、danjia(單價)需求:查詢 A.Workfee + Σ(B.shuliang * C.danjia) > 100 的訂單數量。
SELECT COUNT(DISTINCT a.id) AS order_count
FROM Table_A a
JOIN (
SELECT b.Aid, SUM(c.danjia * b.shuliang) AS material_cost
FROM Table_B b
JOIN Table_C c ON b.chanpinid = c.id
GROUP BY b.Aid
) d ON a.id = d.Aid
WHERE a.Workfee + d.material_cost > 100;
Aid 分組,計算每張訂單的材料總成本 SUM(C.danjia * B.shuliang)。Workfee。WHERE 中判斷 Workfee + material_cost > 100,並用 COUNT(DISTINCT a.id) 統計符合條件的訂單筆數。GROUP BY Ai.d 拼寫錯誤,應為 GROUP BY a.id。HAVING SUM(C.danjia*B.shuliang+A.workfee) 會重複加總工時費(每筆明細都加一次),導致結果偏大。JOIN ... ON 語法,舊式逗號關聯易產生笛卡兒積。文中提供的建表與插入腳本可直接跑通,驗證邏輯正確性。