一件商品有三种规格(或三种以下),例如:餐巾纸,1箱=4盒=20包。
需求是商品的规格和数量可配置,录入时可选择任意规格,页面显示最小规格。
请问如何进行数据库设计?数据库 设计
需求是商品的规格和数量可配置,录入时可选择任意规格,页面显示最小规格。
请问如何进行数据库设计?数据库 设计
解决方案 »
- DML触发器
- 函数游标问题
- PIPELINED 和 pipe row是什么意思?
- 都说如要10G远程导9I的数据库,就要用9i的客户端exp,然后再imp到9i,可9I的EXP是什么?
- 插入数据库顺序的问题
- [续]开发一个oracle存储过程,望高手给些思路,不胜感激!
- *这个存储过程怎么写?
- 一个数据缓冲问题?
- 请问如何将 NT 下oracle 默认字符集修改为Linux下的字符集
- 请教oracle8.1.6的问题,为什么我的sql plus可以进,而DBA studio进不去?
- 求助:plsql无法连接虚拟机上的oracle10g
- 误删undo表空间数据文件,删除不了undo表空间,求解!
create table tt1( a number,b varchar2(10),ca varchar2(10),num number);
insert into tt1 values(1,'箱',2,4);
insert into tt1 values(2,'盒',3,20);
insert into tt1 values(3,'包',null,1);--录入数据
create table tt2(pname varchar2(10),num number,unit varchar2(10));
insert into tt2 values('a',10,1);
insert into tt2 values('b',11,2);
insert into tt2 values('c',12,3);
insert into tt2 values('c',13,1);--前台页面显示
with t as
(select a, power(10, Sum(Log(10, num))) num
from (select connect_by_root(a) a, num from tt1 connect by a = prior ca)
group by a)
select pname, tt2.num * t.num num from tt2 join t on tt2.unit = t.a;
比如:餐巾纸 箱 20
餐巾纸 盒 5
餐巾纸 包 1
表B: 商品类型、规格类型、数量
比如: 餐巾纸 箱 10
餐巾纸 盒 5
在页面显示就好办了 根据商品类型和规格类型 表B中数量*表A的最小规格
uni_id uni_name sub_id amount 备注
1 箱 2 4 1箱=4条
2 条 3 5 1条=5包
3 包 1
id prod_id prod_name amount uni
1000000001 SCN-1000-23500 清风牌纸巾 10 箱
1000000002 SCN-1000-23501 手帕纸 5 条
1000000003 SCN-1000-23502 面纸 3 包
select a.*, a.amount * b.amount as amount
from tb_product a,
(select uni_name,
nvl(value *(select value from tb_dic_uni where uni_id = a.sub_id),1) amount
from tb_dic_uni a
start with sub_id is null
connect by prior uni_id = sub_id) b
where a.unit = b.uni_name
/*
1000000003 SCN-1000-23502 面纸 3 包 3
1000000002 SCN-1000-23501 手帕纸 5 条 25
1000000001 SCN-1000-23500 清风牌纸巾 10 箱 200 */