【MySQL】モールド更新計画

一連の記事

C# の基礎となるライブラリ - MySQLBuilder スクリプト構築クラス (選択、挿入、更新、入力、条件付き SQL の自動生成)
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/129179216

C# の基礎となるライブラリ – MySQL データベース操作補助クラス (推奨読書)
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/126886379

C# の基礎となるライブラリ – SQLite (小規模なローカル データベース) の使用
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/123666958

【プログラミング効率向上】Excelデータをデータベースに一括インポートする
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/126427323

[Oracle] データベース サーバーは、
この記事リンクへの IP アクセスを制限しています: https://blog.csdn.net/youcheng_ge/article/details/122220930

[Oracle] Excel インポート データのチュートリアル
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/118722756

[Oracle] データベース復元チュートリアル_データ ポンプ
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/118054855

[SQL] テーブル フィールドをクエリして主キーを特定する方法
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/110820405

[SQL] 外部適用の使用法
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/79903489

[SQL] 複数テーブル接続の重複データ処理
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/79903619

MySQL インストール チュートリアル (詳細)
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/126037520

MySQL アンインストール チュートリアル (詳細)
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/129279265

[MySQL] 分類および概要ごとにグループに「合計」フィールドを追加する方法
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/128217837

[MySQL] WITH CHECK OPTION の使用法
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/128147196

[MySQL] ストアド プロシージャを使用して数千万のデータを挿入し、効率を向上させるにはどうすればよいですか?
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/77728189

【MySQL】データベーステーブルの行と列の入れ替えを実現
この記事へのリンク: https://blog.csdn.net/youcheng_ge/article/details/77625052

[MySQL] クエリでは、NULL 値が空の文字列に変換されます
このリンク: https://blog.csdn.net/youcheng_ge/article/details/130381878


序文

SQLの機能や特徴、SQLデータ定義言語(テーブル、ビュー、インデックス、制約)、SQLデータ操作言語(データ検索、データ挿入、データ削除、データ更新)、作成を中心に紹介する【データベース編】です。削除トリガー、SQL データ制御言語 (セキュリティと承認、トランザクション処理)、および埋め込み SQL。
このアルバムに興味がある方は、ぜひ注目してみてください。ご質問がある場合は、コメント欄にフィードバックを送ったり、私にプライベートメッセージを送っていただくこともできます。
ここに画像の説明を挿入

1. 技術紹介

1、本地完成对【模具信息表】、【模具检验数据表】、【模具返修流程表】、【模具出入库表】、【物料出入库表(模具部分)】、【物料库存表(模具部分)】数据初始化构造。
耗时不可预期,对MES系统无影响。

2、服务端(MES),仅拷贝【模具信息表】、【模具检验数据表】、【模具返修流程表】、【模具出入库表】、【物料出入库表(模具部分)】表结构,重命名为【模具信息表_copy1】、【模具检验数据表_copy1】、【模具返修流程表_copy1】、【模具出入库表_copy1】、【物料出入库表_copy1(模具部分)】。
预计耗时5分钟

3、将本地初始化数据,导入【模具信息表_copy1】、【模具检验数据表_copy1】、【模具返修流程表_copy1】、【模具出入库表_copy1】、【物料出入库表_copy1(模具部分)】表中。
预计耗时2小时

4、服务端(MES),2小时内,增量数据导出

5、停止服务端(MES),更新服务端(MES)功能组件;copy1表 替换 原表;2小时内,增量数据导入。预计耗时30分钟,对现场有影响。

6、启动服务端(MES)

2. テストケース

-- 20230731,模具车间数据初始化

-- 1、模具返修流程表,增量数据
-- 增量数据
SELECT 模具检验录入时间,模具信息表.* FROM 模具信息表 WHERE 模具检验录入时间>'2023-07-28'
SELECT 模具检验录入时间,模具返修流程表.* FROM 模具返修流程表 ORDER BY 模具检验录入时间 LIMIT 0,500

SELECT COUNT(*) FROM 模具信息表 WHERE 模具检验录入时间>'2023-07-28' 
954

INSERT INTO `dl_mes`.`模具返修流程表` (`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`) 

SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注` 
FROM 模具信息表 WHERE 模具检验录入时间>'2023-07-28'

验证:
SELECT count(*) FROM 模具信息表 93852
SELECT count(*) FROM 模具返修流程表 70795


-- 2、模具信息表,数据初始化:
-- ①新模具,
SELECT 模具供应商编号,模具出厂编号,COUNT(*) as count FROM 模具流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(*) = 1;

INSERT INTO `dl_mes`.`模具信息表_copy1`(`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)

SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`
 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) = 1;


-- ②返修模具
SELECT * FROM 模具返修流程表 where AutoID In
(
	SELECT Max(AutoID) as AutoID FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) > 1
)
2590

INSERT INTO `dl_mes`.`模具信息表_copy1`(`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)

SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`
FROM 模具返修流程表 where AutoID In
(
	SELECT Max(AutoID) as AutoID FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) > 1
)


-- 3、模具检验数据表,数据初始化:
INSERT INTO `dl_mes`.`模具检验数据表` (`公司编号`, `模具检验编号`, `返修次数`, `模具编号`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`) 

SELECT `公司编号`, CONCAT(模具供应商编号,'-',模具出厂编号,'-',COUNT(返修次数)-1 ) AS `模具检验编号`, COUNT(返修次数)-1 AS `返修次数`, `模具编号`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`
FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号,平均直径,模具出厂直径,模具检验时间
-- HAVING COUNT(返修次数)>2

102行

验证:
SELECT count(*) FROM 模具检验数据表 70136
SELECT count(*) FROM 模具返修流程表 70795

-- 4、模具返修流程表,删除重复数据:659
SELECT count(*) FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号,平均直径,模具出厂直径,模具检验时间 HAVING COUNT(1) > 1

DELETE FROM 模具返修流程表 where AutoID In
(
	SELECT MIN(AutoID) as AutoID FROM 模具返修流程表_copy1 GROUP BY 模具供应商编号,模具出厂编号,平均直径,模具出厂直径,模具检验时间 HAVING COUNT(1) > 1
);

SELECT * FROM 模具返修流程表 where AutoID In
(
	SELECT MIN(AutoID) as AutoID FROM 模具返修流程表_copy1 GROUP BY 模具供应商编号,模具出厂编号,平均直径,模具出厂直径,模具检验时间 HAVING COUNT(1) > 1
);


-- 5、模具出入库表,删除重复数据:659
-- ①模具出库,新模和返修模
INSERT INTO `dl_mes`.`模具出入库表_copy1` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) 
SELECT `公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注` FROM 模具出入库表 where 出入库类型='材料领用出库' 


-- ①模具入库,根据模具出库构造入库流水
INSERT INTO `dl_mes`.`模具出入库表_copy1` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) 
SELECT `公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, 'BIM202305001', '采购入库', `存货编码`, '09', '09', `模具编号`, -数量, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, '模具入库' FROM 模具出入库表_copy1 where 出入库类型='材料领用出库'

验证:
SELECT count(*) FROM 模具出入库表_copy1 WHERE 出入库类型='采购入库' 4669
SELECT count(*) FROM 模具出入库表_copy1 WHERE 出入库类型='材料领用出库' 4669
SELECT count(*) FROM 模具出入库表 WHERE 出入库类型='材料领用出库' 4669


-- 6、物料库存表
DELETE FROM 物料出入库表_copy1 WHERE 出入库备注 LIKE '%模具%'

INSERT INTO `dl_mes`.`物料出入库表_copy1` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) 

SELECT `公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, SUM(`数量`), `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`
FROM 模具出入库表_copy1 WHERE 出入库类型='采购入库' GROUP BY 存货编码

INSERT INTO `dl_mes`.`物料出入库表_copy1` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) 

SELECT `公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, SUM(`数量`), `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`
FROM 模具出入库表_copy1 WHERE 出入库类型='材料领用出库' GROUP BY 存货编码


-- 7、模具出入库表_copy1,增补入库流水
-- 模具信息表存在,入库流水中没有的
-- 没有打印标签的
SELECT 状态描述,模具信息表_copy1.* 
FROM 模具信息表_copy1 WHERE 模具编号='空' 

UPDATE 模具信息表_copy1 SET 状态描述='已经模具检验合格, 等待模具打标' WHERE 模具编号='空' 

-- 已打印标签,未入库的
SELECT 状态描述,a.*
FROM 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='采购入库'
WHERE a.模具编号<>'空' AND b.AutoID IS NULL 

UPDATE 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='采购入库'
SET a.状态描述='已经模具打标, 等待模具入库'
WHERE a.模具编号<>'空' AND b.AutoID IS NULL 

-- 已打印标签,已入库的
SELECT 状态描述,a.*
FROM 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='采购入库'
WHERE a.模具编号<>'空' AND b.AutoID IS NOT NULL 

UPDATE 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='采购入库'
SET a.状态描述='已经模具入库, 等待模具领用'
WHERE a.模具编号<>'空' AND b.AutoID IS NOT NULL 

-- 已打印标签,已入库的,已领出
SELECT 状态描述,a.*
FROM 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='材料领用出库'
WHERE a.模具编号<>'空' AND b.AutoID IS NOT NULL 

UPDATE 模具信息表_copy1 a
LEFT JOIN 模具出入库表_copy1 b ON a.模具编号=b.模具编号 and b.出入库类型='材料领用出库'
SET a.状态描述='已经模具领用, 等待模具返修'
WHERE a.模具编号<>'空' AND b.AutoID IS NOT NULL 



-- 导入20230731增量数据

select * FROM 模具信息表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) > 1

INSERT INTO `dl_mes`.`模具信息表`(`公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`)

SELECT `公司编号`, `工厂名称`, `存货编码`, `采购订单编号`, `领用申请单编号`, `销售订单编号`, `模具供应商编号`, `模具类别`, `模具类型`, `模具材质`, `模具出厂编号`, `模具出厂规格`, `模具出厂直径`, `返修次数`, `模具编号`, `模链编号`, `模具标准规格`, `模具规格`, `模具标准直径`, `模具直径`, `模芯规格`, `粒度`, `状态描述`, `库存状态`, `仓库编号`, `货位编号`, `设备编号`, `下盘编号`, `下盘规格`, `累计公里数`, `累计盘数`, `行动`, `模具打标时间`, `模具打标录入时间`, `模具打标操作人编号`, `模具打标备注`, `模具检验时间`, `模具检验录入时间`, `模具检验人编号`, `异常类型`, `特殊检验说明`, `模具检验备注`, `最小直径`, `最大直径`, `平均直径`, `椭圆度`, `椭圆率`, `左定径长度`, `右定径长度`, `定径长度`, `有效值`, `定径区AR`, `左压缩角`, `右压缩角`, `压缩角`, `压缩区AR1`, `压缩区AR2`, `孔偏角X`, `孔偏角Y`, `倍率`, `检验结果`, `模具首次入库时间`, `领用类型`, `模具领用时间`, `模具领用录入时间`, `模具领用人编号`, `模具领用备注`, `模具退库时间`, `模具退库录入时间`, `模具退库操作人编号`, `模具退库原因`, `模具退库备注`, `模具采购退货时间`, `模具采购退货录入时间`, `模具采购退货操作人编号`, `模具采购退货原因`, `模具采购退货备注`, `模具报废时间`, `模具报废录入时间`, `模具报废操作人编号`, `模具报废原因`, `模具报废备注`
 FROM 模具信息表_原 
 ORDER BY 模具检验时间 DESC
 WHERE 模具检验录入时间>'2023-07-30 18:29' 

-- 更新标准直径、模具直径
-- 模具信息表
SELECT 返修次数,模具标准规格,模具规格,模具标准直径,模具直径,平均直径 
FROM 模具信息表

UPDATE 模具信息表
SET 模具标准规格=模具出厂规格,模具标准直径=模具出厂直径,模具直径=平均直径

-- 模具返修流程表
SELECT 返修次数,模具标准规格,模具规格,模具标准直径,模具直径,平均直径 
FROM 模具返修流程表

UPDATE 模具返修流程表
SET 模具标准规格=模具出厂规格,模具标准直径=模具出厂直径,模具直径=平均直径

2023-07-31 18:05:45
SELECT 出入库录入时间 
FROM 模具出入库表_原 WHERE 出入库类型='材料领用出库' ORDER BY 出入库录入时间 DESC

2023-07-31 12:45:52
SELECT 出入库录入时间 
FROM 模具出入库表 WHERE 出入库类型='材料领用出库' ORDER BY 出入库录入时间 DESC


INSERT INTO `dl_mes`.`模具出入库表` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) 
SELECT `公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注` 
FROM 模具出入库表_原 WHERE 出入库类型='材料领用出库' AND 出入库录入时间>'2023-07-31 12:45:52'


SELECT 出入库录入时间 
FROM 模具出入库表_原 WHERE 出入库类型='采购入库' ORDER BY 出入库录入时间 DESC

Z000023

-- 更新模具标准直径、模具直径、模具出厂直径、返修次数等字段
SELECT 返修次数,模具出厂规格,模具出厂直径,模具标准规格,模具标准直径,模具规格,模具直径,平均直径 
FROM 模具返修流程表

-- ①新模具,出厂标准直径,等于标准直径
SELECT a.模具出厂规格,a.模具出厂直径,b.模具标准规格,b.模具标准直径 
FROM 模具返修流程表 a
LEFT JOIN
(
	SELECT 模具出厂规格,模具出厂直径,模具标准规格,模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) = 1
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
WHERE a.模具出厂直径<>b.模具标准直径


-- ②返修模具,出厂标准直径,等于第一条的标准直径
SELECT a.模具出厂规格,a.模具出厂直径,b.模具标准直径 
FROM 模具返修流程表 a
LEFT JOIN
(
	SELECT min(模具标准直径) AS 模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) > 1 
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
WHERE a.模具出厂直径<>b.模具标准直径

UPDATE 模具返修流程表 a
LEFT JOIN
(
	SELECT min(模具标准直径) AS 模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) > 1 
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
SET a.模具出厂直径=b.模具标准直径
WHERE a.模具出厂直径<>b.模具标准直径

UPDATE 模具返修流程表
SET 模具出厂规格=CONCAT(模具出厂直径,'mm')

SELECT 返修次数,模具出厂规格,模具出厂直径,模具标准规格,模具标准直径,模具规格,模具直径,平均直径 
FROM 模具返修流程表


-- 更新返修次数
SELECT a.返修次数,b.返修次数 
FROM 模具返修流程表 a
LEFT JOIN
(
	SELECT 模具供应商编号,模具出厂编号,count(*) AS 返修次数 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
WHERE a.返修次数<>b.返修次数

UPDATE 模具返修流程表 a
LEFT JOIN
(
	SELECT 模具供应商编号,模具出厂编号,count(*) AS 返修次数 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
SET a.返修次数=b.返修次数-1
WHERE a.返修次数<>b.返修次数


-- 更新模具信息表 模具标准直径、模具直径、模具出厂直径、返修次数等字段
SELECT a.模具出厂规格,a.模具出厂直径,b.模具标准规格,b.模具标准直径 
FROM 模具信息表 a
LEFT JOIN
(
	SELECT 模具出厂规格,模具出厂直径,模具标准规格,模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号 HAVING COUNT(1) = 1
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
WHERE a.模具出厂直径<>b.模具标准直径

SELECT a.模具出厂规格,a.模具出厂直径,b.模具标准直径 
FROM 模具信息表 a
LEFT JOIN
(
	SELECT min(模具标准直径) as 模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号  HAVING COUNT(1) > 1 
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
WHERE a.模具出厂直径<>b.模具标准直径


UPDATE 模具信息表 a
LEFT JOIN
(
	SELECT min(模具标准直径) as 模具标准直径,模具供应商编号,模具出厂编号 FROM 模具返修流程表 GROUP BY 模具供应商编号,模具出厂编号  HAVING COUNT(1) > 1 
) b
ON a.模具供应商编号=b.模具供应商编号 AND a.模具出厂编号=b.模具出厂编号
SET a.模具出厂直径=b.模具标准直径
WHERE a.模具出厂直径<>b.模具标准直径

UPDATE 模具信息表
SET 模具出厂规格=CONCAT(模具出厂直径,'mm')

3. 利用概要

WITH CHECK OPTION (チェック オプション付き) は、更新、挿入、削除の操作を実行するときに、更新、挿入、または削除がビュー定義の述語条件 (つまり、サブクエリの条件式) を満たしていることを確認することを意味します。
WITH CHECK OPTION を使用したビューのデータ挿入では、データが where 条件を満たさない場合、挿入はエラー コード 1369 で失敗します。チェック機能が付いています。

with check オプションは、ビューを通じて行われた変更がビューを通じて変更された結果も確認できることを保証します。
変更された結果と結果はビューにのみ表示されるため、他のビューには影響しません。
したがって、挿入する場合は、ビューを更新した後に挿入されたレコードが表示される必要があります。
変更された場合は、変更された結果もビューを通じて表示される必要があります。
削除された場合は、当然のことながら、ビューに表示されているレコードのみを削除できます。

おすすめ

転載: blog.csdn.net/youcheng_ge/article/details/132020434