【MySQL】仓储模块,核对出入库流水

news2024/10/6 14:36:55

系列文章

C#底层库–MySQLBuilder脚本构建类(select、insert、update、in、带条件的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】outer apply的用法
本文链接: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】group by分类汇总,如何增加“总计”字段?
本文链接: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

文章目录

  • 系列文章
  • 前言
  • 一、技术介绍
  • 二、测试用例
    • 2.1 数据准备
  • 三、用法总结


前言

本专栏为【数据库】,主要介绍SQL的功能与特点、SQL数据定义语言(表、视图、索引、约束)、SQL数据操作语言(数据检索、数据插入、数据删除、数据更新)、创建与删除触发器、SQL数据控制语言(安全性和授权、事务处理)以及嵌入式SQL。
如果你对本专辑感兴趣,持续关注吧。大家有任何问题,也可以评论区反馈,私信我。
在这里插入图片描述

一、技术介绍

视图的定义:

视图不是真实存在的基本表,而是一个虚拟表

二、测试用例

2.1 数据准备

创建用户信息表userinfo

-- 手动核实 出入库流水、以及产品信息表数据
-- 1、维护出库流水表
-- 出现出库流水记录存在,但是模具信息表不存在的情况,出库流水一律删除
-- 单号 TOM开头为模具领用

SELECT *
FROM 模具出入库表 a
LEFT JOIN 模具信息表 b ON a.模具编号=b.模具编号 
WHERE a.出入库单据编号 LIKE 'TOM%' AND a.出入库类型='材料领用出库'
AND b. 模具编号 IS NULL

-- 2、从备份表中,找到缺失的模具信息数据
-- 模具信息表,不存在
SELECT * 
FROM 模具信息表
WHERE 模具编号 ='YP2ACX230322699'

-- 模具信息表_原,存在
SELECT * 
FROM 模具信息表_原
WHERE 模具编号 ='YP2ACX230322699'


SELECT c.模具编号,c.模具出厂编号,c.模具供应商编号,c.* 
FROM 模具出入库表 a
LEFT JOIN 模具信息表 b ON a.模具编号=b.模具编号 
LEFT JOIN 模具信息表_原 c ON a.模具编号=c.模具编号 
WHERE a.出入库单据编号 LIKE 'TOM%' AND a.出入库类型='材料领用出库'
AND b.模具编号 IS NULL AND c.模具编号 IS NOT NULL

-- 3、验证2的合理性
-- 模具信息表,不存在
SELECT * 
FROM 模具信息表
WHERE 模具编号 ='YP2ACX230303306'

-- 模具信息表_原,存在
SELECT * 
FROM 模具信息表_原
WHERE 模具编号 ='YP2ACX230303306'

-- 模具信息表,不存在
SELECT * 
FROM 模具信息表
WHERE 模具编号 ='HP1AAXJC20230893'

-- 模具信息表_原,存在
SELECT * 
FROM 模具信息表_原
WHERE 模具编号 ='HP1AAXJC20230893'


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

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

-- 5、维护入库流水表
-- 有出库流水数据,必然有入库流水,查找入库流水缺失情况
-- 模具出库流水
SELECT
*
FROM 模具出入库表 a
WHERE a.出入库单据编号 LIKE 'TOM%' AND a.出入库类型='材料领用出库'
-- 模具入库流水
SELECT
*
FROM 模具出入库表 b 
WHERE b.出入库单据编号 LIKE 'BIM%' AND b.出入库类型='采购入库'


SELECT
a.*
FROM

(
SELECT * 
FROM 模具出入库表 a
WHERE a.出入库单据编号 LIKE 'TOM%' AND a.出入库类型='材料领用出库'
) a
LEFT JOIN
(
SELECT *
FROM 模具出入库表 b 
WHERE b.出入库单据编号 LIKE 'BIM%' AND b.出入库类型='采购入库'
) b ON a.模具编号 = b.模具编号

WHERE b.模具编号 IS NULL

模具入库流水,缺2条数据,模具编号如下:
DQP1BAX230506101
DQP1AAXD30627054

-- 6、补齐入库流水数据
SELECT *
FROM 模具出入库表_原 b 
WHERE 
-- b.出入库单据编号 LIKE 'BIM%' AND 
b.出入库类型='采购入库'
AND b.模具编号 IN('DQP1BAX230506101','DQP1AAXD30627054')


INSERT INTO `dl_mes`.`模具出入库表` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) VALUES ('Z', '', '空', '空', '空', 'BIM202307049', '采购入库', '03010114', '09', '09', 'DQP1AAXD30627054', 1.000, '2023-07-30 20:02:21', '2023-07-30 20:02:23', 'developer', 'developer', '模具入库');
INSERT INTO `dl_mes`.`模具出入库表` (`公司编号`, `采购订单编号`, `产成品入库单编号`, `领料申请单编号`, `销售订单编号`, `出入库单据编号`, `出入库类型`, `存货编码`, `仓库编号`, `货位编号`, `模具编号`, `数量`, `出入库时间`, `出入库录入时间`, `出入库操作人编号`, `库管员编号`, `出入库备注`) VALUES ('Z', '', '空', '空', '空', 'BIM202307052', '采购入库', '03010114', '09', '09', 'DQP1BAX230506101', 1.000, '2023-07-31 17:41:28', '2023-07-31 17:41:28', 'developer', 'developer', '模具入库');

-- 7、检验 出库流水、入库流水是否有对应
-- 有出库,必然有入库
-- 有入库,不一定有出库
-- 结存数量+出库数=入库数量
SELECT
a.*
FROM

(
SELECT * 
FROM 模具出入库表 a
WHERE a.出入库单据编号 LIKE 'TOM%' AND a.出入库类型='材料领用出库'
) a
LEFT JOIN
(
SELECT *
FROM 模具出入库表 b 
WHERE b.出入库单据编号 LIKE 'BIM%' AND b.出入库类型='采购入库'
) b ON a.模具编号 = b.模具编号

WHERE b.模具编号 IS NULL

结论:无数据,证明出入库流水正确。

三、用法总结

WITH CHECK OPTION(带有检查选项)表示对update、insert、delete操作时保证更新、插入或者删除满足视图定义中的谓词条件(即子查询中的条件表达式)。
使用WITH CHECK OPTION的视图,对于数据插入,不满足where条件的数据,插入失败,错误代码1369。具有一个检查的功能。

with check option保证了通过视图进行的修改,必须也能通过该视图看到修改后的结果。
修改的结目标和结果都只在视图上呈现,这样不会影响其他视图。
所以你插入,那么插入这条记录在刷新视图后必须可以看到;
如果修改,修改完的结果也必须能通过该视图看到;
如果删除,当然只能删除视图里有显示的记录。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/831409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在敏捷项目中如何做好资源规划?

敏捷项目管理是一种交付项目的迭代方法,主要用于软件开发项目。该方法由多个迭代或增量步骤组成,以实现最终目标。在敏捷的环境下工作,难免遇到以下这些情况: ● 人员和团队通常必须将时间分配到不同的项目上。 ● 敏捷和非敏捷工…

【Linux】创建与删除用户

新增用户: adduser 用户名【添加用户】 passwd 用户名【设置用户密码】删除用户: userdel -r 用户名【删除用户】

字段填充策略 FieldFill

实体类中有如下属性,通过上面的自动填充属性,我们可以实现在进行插入(insert)操作时对添加了注解TableField(fill FieldFill.INSERT)的字段进行自动填充(解释:后面会写配置自动填充的配置类,该…

举个栗子~Quick BI 技巧(2):创建柱线组合图

上一期举个栗子为数据粉们分享了如何简单几步创建趋势折线图,有一些数据粉发来疑问:如何利用 Quick BI 制作柱线图呢? 线柱图是一种非常重要且常用的组合图表,可以将两组数据在同一个表中直观的表达。今天的栗子,我们…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(25)-Fiddler如何优雅地在正式和测试环境之间来回切换-下篇

1.简介 在开发或者测试的过程中,由于项目环境比较多,往往需要来来回回地反复切换,那么如何优雅地切换呢?宏哥今天介绍几种方法供小伙伴或者童鞋们进行参考。 2.实际工作场景 2.1问题场景 (1)已发布线上…

【微信小程序】van-uploader实现文件上传

使用van-uploader和wx.uploadFile实现文件上传,后端使用ThinkPHP。 1、前端代码 json:引入van-uploader {"usingComponents": {"van-uploader": "vant/weapp/uploader/index"} }wxml:deletedFile是删除文件函…

React入门学习笔记2

jsx语法规则 定义虚拟DOM时,不要写引号。标签中混入JS表达式时要用{ }。样式的类名指定不要用class,要用className。内联样式,要用style{{key:value}}的形式去写。只有一个根标签标签必须闭合标签首字母 )若小写字母开头&#xf…

C语言技巧 ----------调试----------程序员必备技能

作者前言 🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂 🎂 作者介绍: 🎂🎂 🎂…

pytorch中torch.einsum函数的详细计算过程图解

第一次见到 rel_h torch.einsum(“bhwc,hkc->bhwk”, r_q, Rh)这行代码时,属实是懵了,网上找了很多博主的介绍,但都没有详细的说明函数内部的计算过程,看得我是一头雾水,只知道计算结果的维度是如何变化的&#xf…

IDEA使用数据库(新手入门详细教程)

第一步:将数据库服务器打开 进入你下载好的数据库路径到bin目录下cmd打开命令提示符界面 确认启动数据库 第二步:打开IDEA,找到IDEA数据库 第三步:选择要连接数据库 第四步:根据数据库信息连接数据库 连接之前的页面 输入我们要的…

常温超导:AI在研发中的潜力

目录 引言:1. 常温超导的挑战:2. AI在材料研究中的作用:3. AI在理论模型中的作用:4. AI与实验室合作的潜力:结论: 引言: 常温超导一直被认为是科学界的“圣杯”,可以在室温条件下实…

谷歌seo推广怎么做

谷歌SEO(搜索引擎优化)推广是提高网站在谷歌搜索结果中的排名,从而获得更多有针对性的流量和潜在客户的过程。以下是一些关键步骤,帮助您进行谷歌SEO推广: 关键词研究:首先,进行详细的关键词研究…

公司植物日常护养方法备忘录

植物为我们净化空气,美化环境,我们要按照科学的经验照顾好它们。公司植物日常通用护养方法如下: 首先剪掉已经枯黄的部分。 需要晒太阳的植物按时搬到外面晒太阳,每次晒1到2个小时。 所有植物统一在每个月的20号左右施肥一次&am…

链表(二) 双链表操作详解

文章目录 四、双向带头循环链表的实现List.hList.c创建返回链表的头结点双向链表打印双向链表尾插双向链表尾删双向链表头插双向链表头删双向链表查找双向链表在pos的前面进行插入双向链表删除pos位置的节点 五、单链表与双链表比较 什么是链表及单链表的实现请跳转&#xff1a…

JS监听页面回退前进的方案

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 前言 在业务中遇到需求,App中的H5页面跳转到其他外链页面,外链页面修改了整个APP中的导航栏样式,回退到当前页面&…

微信开发之自动回复的技术实现

请求URL: http://域名地址/sendText 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明wId是string登录实例标识wcId是string接收…

人物宣传稿怎么写?写作技巧有哪些?

人物宣传稿是一种介绍个人或组织成员的文案,旨在宣传其成就、特点和影响力。以下是一些人物宣传稿的写作技巧,帮助您撰写出生动、引人入胜的宣传稿。接下来伯乐网络传媒就来给大家讲解一下。 突出核心信息: 在宣传稿的开头,用简洁…

ARTS 挑战打卡的第1天,我学到了这些~

关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ●Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个技术技巧 ● Share: 分享一篇有观点和思考的技术文章 深度学习 深度学习概念崛起框架 主页传送门&…

在线思维导图怎么绘制?学学这几种绘制方法

在线思维导图怎么绘制?思维导图是一种非常有效的学习和工作工具,可以帮助我们更好地组织和呈现信息,提高学习效率和工作效率。而在线思维导图的出现,更是为我们的绘制带来了极大的便利。现在也有很多绘制思维导图的方法&#xff0…

【RedisInsight】连入Docker容器可视化redis服务

文章目录 下载安装RedisInsight添加数据库添加docker容器内的redis数据库 下载安装RedisInsight 进入redis官网下载:https://redis.com/redis-enterprise/redis-insight/,安装过程一路Next即可。 打开桌面上的快捷方式启动:RedisInsight-v2…