我创建了一个有6个表的视图,但是每个顺序有多个数据。 删除两个表后,视图的数据发生了更多变化。 以下是四个表的结构和视图的结构:
CREATE TABLE `order_content` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_no` char(50) NOT NULL COMMENT '订单编号',
`sku_no` char(20) NOT NULL COMMENT '商品sku编号',
`gnum` int(11) NOT NULL COMMENT '订单内序号',
`qty` int(11) NOT NULL COMMENT '购买数量',
`price` decimal(10,2) NOT NULL COMMENT '商品出售时售价',
`grossWeight` char(10) DEFAULT NULL COMMENT '毛重',
`netWeight` char(10) DEFAULT NULL COMMENT '净重',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1211 DEFAULT CHARSET=utf8
CREATE TABLE `st_put_stock` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品入库信息表',
`sn` char(50) NOT NULL COMMENT '商品SN吗',
`sku` char(50) NOT NULL COMMENT '18位随机',
`supplier` int(5) NOT NULL COMMENT '供应商supplier表id',
`quantity` int(10) NOT NULL COMMENT '数量',
`report_id` char(50) NOT NULL COMMENT '关单号(批次)',
`manufacture` char(15) NOT NULL COMMENT '生产日期的时间戳',
`declare` char(15) NOT NULL COMMENT '入仓的时间戳',
`create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间戳',
`depot_id` char(30) NOT NULL COMMENT '仓位号',
`record_no` char(50) NOT NULL COMMENT '账册号',
`is_allot` int(1) NOT NULL DEFAULT '0' COMMENT '是否调拨 0 非调拨 1 调拨',
`price` decimal(10,2) DEFAULT NULL COMMENT '商品售价::::::(售价)',
`remark` char(200) DEFAULT NULL COMMENT '备注',
`valid` int(11) NOT NULL DEFAULT '0' COMMENT '0 有效 1 无效',
PRIMARY KEY (`id`),
KEY `sn` (`sn`,`sku`)
) ENGINE=MyISAM AUTO_INCREMENT=1050 DEFAULT CHARSET=utf8
CREATE TABLE `st_goods` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品信息表',
`p_name_e` varchar(50) NOT NULL COMMENT '电商平台上的商品名称',
`sn` char(50) NOT NULL COMMENT '商品SN码',
`country` char(50) NOT NULL COMMENT '原产国',
`gmodel` char(200) NOT NULL COMMENT '商品规格型号',
`p_unit` char(30) NOT NULL COMMENT '计量单位',
`p_price` decimal(10,2) NOT NULL COMMENT '商品销售价格(税前价)',
`p_weight` float(10,2) NOT NULL COMMENT '商品重量,KG',
`p_l` float(3,1) NOT NULL COMMENT '商品长,cm',
`p_w` float(3,1) NOT NULL COMMENT '商品宽 , cm',
`p_h` float(3,1) NOT NULL COMMENT '商品高 ,cm',
`p_package` char(10) NOT NULL COMMENT '商品包装',
`tax` float(10,5) NOT NULL COMMENT '税率',
`unit1` char(30) NOT NULL COMMENT '法定计量单位',
`unit2` char(30) NOT NULL COMMENT '第二计量单位',
`inspGoodsRegNo` varchar(100) DEFAULT NULL COMMENT '商品备案号(检)',
`inspProdBrdCn` varchar(100) DEFAULT NULL COMMENT '中文品牌(检)',
`inspProdBrdEn` varchar(100) DEFAULT NULL COMMENT '英文品牌(检)',
`inspQtyUnitCode` varchar(100) DEFAULT NULL COMMENT '数量单位代码(检)',
`inspPackNumber` varchar(100) DEFAULT NULL COMMENT '包装数量(检)',
`gross_weight` decimal(11,2) DEFAULT NULL COMMENT '商品毛重(KG)',
`create` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间戳',
`inspCurrUnit` char(20) DEFAULT NULL COMMENT '货币单位代码(国检),填写国检币制参数表中编号',
`inspOriCtryCode` char(20) DEFAULT NULL COMMENT '原产国代码(国检),填写国检国家参数表中编号',
`inspPackTypeCode` char(20) DEFAULT NULL COMMENT ' 包装类型代码(国检,填写国检包装类型参数表中编号',
`inspProdSpecs` char(100) DEFAULT NULL COMMENT '商品规格型号(国检),满足国检监管的要求为准。包括:品名、牌名、规格、型号、成份、含量、等级等',
`inspGrossWeight` decimal(19,2) DEFAULT NULL COMMENT '商品毛重',
`inspProdCbecCode` char(30) DEFAULT NULL COMMENT '产品国检备案编号(国检),商品在国检备案的编号',
`hs` char(100) DEFAULT NULL COMMENT 'hs编码',
`ciq_name` varchar(100) DEFAULT NULL COMMENT '商品报关名称',
`ciq_sku` char(20) DEFAULT NULL COMMENT '商品报关代码',
`ciq_country` char(5) DEFAULT NULL COMMENT '原产国代码(关)',
`ciq_unit1` char(5) DEFAULT NULL COMMENT '法定计量单位代码',
`ciq_unit2` char(5) DEFAULT NULL COMMENT '法定第二计量单位代码',
`ciq_price` decimal(10,2) DEFAULT NULL COMMENT '商品备份价格',
`category` char(100) DEFAULT NULL COMMENT '产品类别',
`unit2_quantity` char(10) DEFAULT NULL COMMENT '第二计量单位数量',
`country_id` char(11) DEFAULT NULL COMMENT '商品原产国代码(关)',
PRIMARY KEY (`id`),
UNIQUE KEY `sn` (`sn`)
) ENGINE=MyISAM AUTO_INCREMENT=786 DEFAULT CHARSET=utf8
CREATE TABLE `brush_account` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`sku` char(50) NOT NULL COMMENT 'sn码',
`price` decimal(10,2) NOT NULL COMMENT '价格',
`account_id` int(11) NOT NULL COMMENT '内部生成订单账号',
PRIMARY KEY (`id`,`sku`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=196 DEFAULT CHARSET=utf8
这是视图的结构
CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`127.0.0.1` SQL SECURITY DEFINER VIEW `brush_stock_goods` AS
select `pt`.`record_no` AS `record_no`, `oc`.`order_no` AS `order_no`, `g`.`sn` AS `sn`, `g`.`p_name_e` AS `p_name_e`, `oc`.`sku_no` AS `sku_no`, `oc`.`gnum` AS `gnum`, `oc`.`price` AS `price`, `oc`.`qty` AS `qty`, `pt`.`report_id` AS `report_id`, `g`.`inspGoodsRegNo` AS `inspGoodsRegNo`, `g`.`inspProdBrdCn` AS `inspProdBrdCn`, `g`.`inspQtyUnitCode` AS `inspQtyUnitCode`, `g`.`inspProdBrdEn` AS `inspProdBrdEn`, `g`.`inspPackNumber` AS `inspPackNumber`, `g`.`inspCurrUnit` AS `inspCurrUnit`, `g`.`inspOriCtryCode` AS `inspOriCtryCode`, `g`.`inspPackTypeCode` AS `inspPackTypeCode`, `g`.`inspProdSpecs` AS `inspProdSpecs`, `g`.`inspGrossWeight` AS `inspGrossWeight`, `g`.`inspProdCbecCode` AS `inspProdCbecCode`, `ba`.`account_id` AS `account_id`, `g`.`gross_weight` AS `gross_weight`, `g`.`create` AS `create`, `g`.`hs` AS `hs`, `g`.`ciq_name` AS `ciq_name`, `g`.`ciq_sku` AS `ciq_sku`, `g`.`ciq_country` AS `ciq_country`, `g`.`ciq_unit1` AS `ciq_unit1`, `g`.`ciq_unit2` AS `ciq_unit2`, `g`.`ciq_price` AS `ciq_price`, `g`.`category` AS `category`, `g`.`unit2_quantity` AS `unit2_quantity`, `g`.`country_id` AS `country_id`, `oc`.`id` AS `id`, `g`.`p_weight` AS `p_weight` from (((`order_content` `oc` join `st_put_stock` `pt` on ((`oc`.`sku_no` = `pt`.`sku`))) join `st_goods` `g` on ((`pt`.`sn` = `g`.`sn`))) join `brush_account` `ba` on ((`oc`.`sku_no` = `ba`.`sku`)))
我尝试了很多方法,但是我对数据库了解不多,所以无法解决问题。我想我增加了更少的限制。
我想要一个内容中的数据,每个订单中的sku只有一个数据,并且出现这种情况的原因,谢谢
答案 0 :(得分:0)
本质上,您的查询可以归结为:
SELECT lots
, of
, columns
FROM order_content oc
JOIN st_put_stock pt
ON oc.sku_no = pt.sku
JOIN st_goods g
on pt.sn = g.sn
join brush_account ba
on oc.sku_no = ba.sku;
这是一个非常简单的查询,因此不会出错。如果您需要更复杂的东西,那么我们真的需要查看一些样本数据和所需的结果,但是我建议您首先简化问题,将其简化为基本要点。