pos系统开发步骤3-销售业务的实现
销售业务设计过程
1️⃣与销售业务有关的表?
tb_syjlb(收银记录表)
tb_symxb(收银明细表)
tb_kcxxb(库存信息表)
tb_hyxxb(会员信息表)
2️⃣与这些表的关系?
tb_syjlb(收银记录表) insert
tb_symxb(收银明细表) insert
tb_kcxxb(库存信息表) update
tb_hyxxb(会员信息表) update
3️⃣分别需要对哪些列赋值或更新哪些列的值?
tb_syjlb(收银记录表) insert syyid(收银员id) gkid(顾客id) ysje(应收金额) ssje(实收金额) zffs(支付方式)
tb_symxb(收银明细表) insert syid(收银id) hpid(货品id) xssl(销售数量) dj(单价) lsj(零售价)
tb_kcxxb(库存信息表) update 依据hpid xssl(销售数量)更新kcsl(库存数量)
tb_hyxxb(会员信息表) update 依据hyid(会员id) ssje(销售金额)更新knye(卡内余额) kyjf(可用积分)
4️⃣这些值从何而来?
tb_syjlb(收银记录表)insert syyid gkid ysje ssje zffs 需要从用户界面传过来 syyid gkid ysje ssje zffs
tb_syjlmxb(收银记录明细表)insert syid hpid xssl dj lsj 需要从用户界面传过来 hpid xssl
tb_hpkcb (货品库存表) update 依据hpid xssl 更新 kcsl 需要从用户界面传过来hpid xssl
tb_hyxxb(会员信息表) update 依据hyid ssje 更新knye kyjf 需要从用户界面传过来 hpid ssje
5️⃣表格数据向数据库传递的方法——数据转换的方法(没有表参数,就是没办法直接把表从界面传给数据库)转换方法?
把表格中的数据连接成字符串,传到数据库中后再把字符串还原为表格
例如:把销售明细中的hpid,xssl连接为以逗号分隔的字符串
DELIMITER $$CREATEPROCEDURE `possystem`.`xsjlcp`(xsmx VARCHAR(1000))BEGINDROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT,xssl NUMERIC(18,3));WHILE (xsmx>'') DOSET @k=POSITION(',' IN xsmx);SET @hpid=LEFT(xsmx,@k-1);SET xsmx=SUBSTR(xsmx,@k+1);SET @k=POSITION(',' IN xsmx);SET @xssl=LEFT(xsmx,@k-1);INSERT INTO lsb VALUES(@hpid,@xssl);SET xsmx=SUBSTR(xsmx,@k+1);END WHILE;SELECT * FROM lsb;SELECT hptm,hpmc,jldw,dj,cxj,xssl*cxj AS 金额 FROM tb_hpxxb,lsb WHERE tb_hpxxb.hpid=lsb.hpid;END$$DELIMITER ;
为什么在mysql中执行存储过程不出结果?
6️⃣销售业务实现?
DELIMITER $$CREATEPROCEDURE `possystem`.`xsjlcp_new`(syyid INT,hyid INT,ysje DECIMAL(18,2),ssje DECIMAL(18,2),zffs TINYINT,xsmx VARCHAR(1000))BEGIN/*1. tb_syjlb(收银记录表) insert syyid(收银员id) gkid(顾客id)ysje(应收金额) ssje(实收金额) zffs(支付方式)*/INSERT INTO tb_syjlb(syyid,gkid,ysje,ssje,zffs) VALUES(syyid,hyid,ysje,ssje,zffs);SET @syid=@@identity;DROP TABLE IF EXISTS lsb;CREATE TEMPORARY TABLE lsb(hpid INT,xssl NUMERIC(18,3));WHILE (xsmx>'') DOSET @k=POSITION(',' IN xsmx);SET @hpid=LEFT(xsmx,@k-1);SET xsmx=SUBSTR(xsmx,@k+1);SET @k=POSITION(',' IN xsmx);SET @xssl=LEFT(xsmx,@k-1);INSERT INTO lsb VALUES(@hpid,@xssl);SET xsmx=SUBSTR(xsmx,@k+1);END WHILE;/*2. tb_syjlmxb(收银记录明细表)insert syid hpid xssl dj lsj 需要从用户界面传过来 hpid xssl*/INSERT INTO tb_symxb(syid,hpid,xssl,dj,lsj) SELECT @syid,lsb.hpid,xssl,dj,cxj FROM lsb,tb_hpxxb WHERE lsb.hpid=tb_hpxxb.`hpid`;/*3. tb_hpkcb (货品库存表) update 依据hpid xssl 更新 kcsl 需要从用户界面传过来hpid xssl*/DROP TABLE IF EXISTS lsb1;CREATE TEMPORARY TABLE lsb1(hpid INT,xssl NUMERIC(18,3));INSERT INTO lsb1 SELECT hpid,SUM(xssl) FROM lsb GROUP BY hpid;UPDATE tb_hpkcb b1,lsb1 b2 SET b1.kcsl=b1.kcsl-b2.xssl WHERE b1.hpid=b2.hpid;/*4. tb_hyxxb(会员信息表) update 依据hyid ssje 更新knye kyjf 需要从用户界面传过来 hpid ssje */IF hyid>10000 THENUPDATE tb_hyxxb SET knye=knye-ssje,kyjf=kyjf+FLOOR(ssje) WHERE tb_hyxxb.`hyid`=hyid;END IF;END$$DELIMITER ;
一、事务的概念
在销售存储过程中增加事务控制
start transaction;
COMMIT; 或者
ROLLBACK;
二、作业与思考题:
1、在上面的练习中用到了哪些内置函数?
MySQL POSITION() 函数
实例
在字符串“begtut.com”中搜索“u”,并返回位置:
SELECT POSITION("u" IN "begtut.com") AS MatchPosition;
运行实例»
定义和用法
POSITION()函数返回字符串中第一次出现的子字符串的位置。
如果在原始字符串中找不到子字符串,则此函数返回0。
此函数执行不区分大小写的搜索。
注:LOCATE()函数等于position()函数。
语法
POSITION(substring IN string)
参数值
参数 | 描述 |
---|---|
substring | 必须项。要在字符串中搜索的子字符串 |
string | 必须项。要搜索的原始字符串 |
MySQL LEFT() 函数
实例
从字符串中提取3个字符(从左侧开始):
SELECT LEFT("SQL Tutorial", 3) AS ExtractString;
运行实例»
定义和用法
LEFT()函数从字符串中提取多个字符(从左开始)。
**提示:**另请查看RIGHT()函数。
语法
LEFT(string, number_of_chars)
参数值
参数 | 描述 |
---|---|
string | 必须项。要从中提取的字符串 |
number_of_chars | 必须项。要提取的字符数。如果此参数大于字符串中的字符数,则此函数将返回字符串 |
MySQL SUBSTR() 函数
实例
从字符串中提取子字符串(从位置5开始,提取3个字符):
SELECT SUBSTR("SQL Tutorial", 5, 3) AS ExtractString;
运行实例»
定义和用法
SUBSTR()函数从字符串中提取子字符串(从任何位置开始)。
注意: SUBSTR()和MID()函数等于SUBSTRING()函数。
语法
SUBSTR(string, start, length)
要么:
SUBSTR(string FROM start FOR length)
参数值
参数 | 描述 |
---|---|
string | 必须项。要从中提取的字符串 |
start | 必须项。起始位置。可以是正数或负数。如果是正数,则此函数从字符串的开头提取。如果是负数,则此函数从字符串的末尾提取 |
length | 可选项。要提取的字符数。如果省略,将返回整个字符串(从起始位置) |
2、临时表如何创建?
先把临时表转化成字符串,再把字符串转换成表格,添加到创建的表中
3、如何实现带子查询的插入操作?
insert into *** select *** from tb where ***;
4、@@identity里面存储的是什么数据?
@@identity得到上一次插入记录时自动产生的ID
5、设计存储过程的基本步骤是什么?
创建存储过程—>写所需要的参数—>根据功能编写sql语句—>测试存储过程
pos系统开发步骤3-销售业务的实现相关推荐
- pos系统开发步骤1-创建数据库以及拼音缩写的实现
pos系统开发步骤1-创建数据库以及拼音缩写的实现
- pos系统开发步骤2- 建立数据库和表
建立数据库和表
- 安徽微享商盟系统开发步骤共享链
在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个不同表之间可以存在外键依赖关系,一个表自身也可以有自反关系(表中的一个字段引用主键,从而也是外键字段). Entity Fra ...
- 酒店预定系统开发步骤_分享酒店预订系统小程序开发制作功能介绍
酒店预订系统就是针对酒店业务的商家,利用此系统进行线上酒店销售与宣传,可以对酒店产品的发布.修改.报价.游客通过商家搭建的小程序拼团,可以查看酒店产品,在线预订酒店产品,帮助商家将传统线下酒店销售转移 ...
- 陕西二级分销系统开发适合做什么业务?
二级分销的具体层级划分,还有分佣的层级大家都已经很清楚了,那我们该如何去看自己的业务适不适合做二级分销呢? 二级分销的受众范围还是非常广的,比如说我们经常可以用到的日用品,或者是一些价格比较低的快消品 ...
- 实体店商家微信会员系统开发步骤_分享微信会员系统优势
门店如何快速吸引消费? 一般来说,新店开业时会有试营业活动. 在此期间,为了吸引注意力,店铺会以低价吸引顾客消费. 正式开业后,通常有两种方式来吸引新客户和培养客户: 编辑 1.微信抽奖 主要是利用微 ...
- 美发店预约系统开发的作用_分享美发店预约系统开发步骤
在线可以先查看美发店提供的服务项目,可以查看项目的价格.商家介绍和目前的预约人数等详情,用户掌握了信息之后就能直接预约位置,可以自己选择到店的时间,有变动的话可以在线随时的取消预的,非常的方便.而目, ...
- 定制一个erp系统多少钱-【揭秘erp开发报价及开发步骤】
为了更高效的管理业务,有不少企业都想要定制开发属于自己企业的ERP系统,在选择系统供应商的时候,很多企业都比较关心定制开发ERP的费用,定制一个erp系统多少钱呢,由于定制的产品不同于标准产品,无法统 ...
- 家政预约系统开发作用和步骤
家政预约系统开发,家政预约系统开发作用,家政预约系统开发步骤.家政领域在迅速的快速发展之中,也逐渐以朝气蓬勃的活力,展现出专业化.低龄化.课程化.产业发展的四大发展趋势. 家政预约小程序作用: 1.连 ...
最新文章
- 这只狗,其实是猫变的:“撸猫神器”StarGAN v2来了!
- pandas使用duplicated函数删除dataframe中重复列名称的数据列、默认保留重复数据列中的第一个数据列(removing duplicate columns in dataframe)
- 算法:串联所有单词的子串
- L2-006. 树的遍历(不建树)
- c语言结构体定义字符串数组,C语言,结构体中字符串的声明(采用字符指针还是字符数组)...
- wp博客写文章500错误_500多个博客文章教我如何撰写出色的文章
- 怎么解决缺少java.doc_java 生成doc帮助文档时出现的问题
- 计算机识别键盘流程,通过计算机视觉的方式识别并判断键盘输入
- CH340串口驱动(包含各系统平台)
- openairinterface5g+limesdr搭建4G基站
- 5G无线网络优化覆盖
- 软件测试实验-决策表
- 苹果软件更新在哪里_苹果iOS 14.1/iPadOS 14.1正式版发布:新增更新机型[多图]-软件资讯...
- Cordova 卸载
- 用Python掌握QQ群聊天记录数据分析
- 渗透工具TPLogScan:ThinkPHP3和5日志扫描工具,提供命令行版和BurpSuite插件版,尽可能发掘网站日志信息
- php面试 猴子大王,php猴子选大王问题解决方法,猴子大王_PHP教程
- elon函数_Elon Mussk的Neuroink真是令人难以置信
- Linux 桥接ping不通外网(特别是校园网) 解决方式及错误总结
- 从一位老工程师的心里话开始谈起IT行业职