SELECT
.......................
FROM 派工單 AS s
JOIN 派工單物料
LEFT JOIN
(
SELECT
Q.物料識別碼
FROM 物料排版圖數量 AS Q
JOIN 物料排版圖 AS M ON Q.物料排版圖數量ID = M.物料排版圖數量ID
JOIN 排版圖 AS SP ON SP.排版圖圖號 = M.排版圖圖號
JOIN 排版圖設備加工零件 AS GP ON GP.排版圖圖號 = SP.排版圖圖號
JOIN 設備加工零件 AS GG ON GP.設備加工零件號碼 = GG.設備加工零件號碼
WHERE Q.稽核 = 0
GROUP BY Q.物料識別碼
) AS QQQ ON QQQ.物料識別碼 = w.物料識別碼
WHERE
.......................
ORDER BY
.......................
詢問同事撰寫邏輯後才發現,原來是擔心 [物料排版圖]、[排版圖]、[排版圖設備加工零件] 和 [設備加工零件] 資料對應不起來,自動派工會出現問題,才乾脆把相關 Table 通通 JOIN 起來,聽完後直覺是,這不是 Foreign Key(以下簡稱 FK)該作的事情嘛。
檢查相關 Table 後才發現,[排版圖設備加工零件] 對應 [設備加工零件] 還真的沒有設定 FK,詳細了解原因後,才發現給現場操作員資料,會包含一些不需要 [設備加工零件] 的輔助資訊,兩者放在同一個 Table 內,所以才不能建立 FK,再檢查 [設備加工零件] 相關 Table 才發現,因為 [排版圖設備加工零件] 出錯,所以連帶 [物料排版圖數量] 相關資訊也掛掉不少。
多建立一個 Table 並修改程式來儲存輔助資訊,並把 [排版圖設備加工零件] 和 [設備加工零件] 的 FK 建立起來,避免再次發生悲劇,Orz
沒有留言:
張貼留言