SELECT ss.shuliang - ss2.geshu
from ss,ss2 WHERE
ss.danjia=ss2.danjia;
上面这是只是表达个思想,意思是计算库存,入库数量减出库数量,当商品名称一样的时候就两个表做减法,一个入库表一个出库表。
书上说这种语法风格会产生大量笛卡尔积,所以建议采用子查询,这个我也不知道怎么改成子查询。
上面的思路是把入库和出库分别记录在两张表,如果都记录到一张表会不会方便写子查询语句呢,如果写到一张表就需要在添加一个表示出库或是入库的列。
7 个解决方案
#1
danjia 在两个表中是唯一的吗?
#2
不唯一,有重复,
#3
danjia 是商品名称,在入库表和出库表中反复使用,一会在入库表中入几个,一会入几个,出库表也是一会出几个,一会出几个
#4
那就产生笛卡尔积了
例如
ss表
danjia shuliang
1 10
1 12
ss2表
danjia geshu
1 1
1 2
上边那个语句进行减法的时候,
ss表中的第一条数据,需要对ss2中的两条数据都进行减法操作。然后ss表中第2条数据又对ss2的两条数据做两次减法。
#5
那就产生笛卡尔积了
把出库和入库记录放在同一张表可以不产生笛卡尔积吗,或者有什么别的解决方法
#6
一张表可以,一张表记录进出所有记录也是常见设计。
至于其它书上讲的东西,仅供参考。效率的问题要具体看表中的数据分布和索引的设计,
至于其它书上讲的东西,仅供参考。效率的问题要具体看表中的数据分布和索引的设计,
#7
给商品表上添加库存字段,在入库或者出库的时候对其进行加减法
#1
danjia 在两个表中是唯一的吗?
#2
danjia 在两个表中是唯一的吗?
不唯一,有重复,
#3
danjia 在两个表中是唯一的吗?
danjia 是商品名称,在入库表和出库表中反复使用,一会在入库表中入几个,一会入几个,出库表也是一会出几个,一会出几个
#4
danjia 在两个表中是唯一的吗?
不唯一,有重复,
那就产生笛卡尔积了
例如
ss表
danjia shuliang
1 10
1 12
ss2表
danjia geshu
1 1
1 2
上边那个语句进行减法的时候,
ss表中的第一条数据,需要对ss2中的两条数据都进行减法操作。然后ss表中第2条数据又对ss2的两条数据做两次减法。
#5
那就产生笛卡尔积了
把出库和入库记录放在同一张表可以不产生笛卡尔积吗,或者有什么别的解决方法
#6
一张表可以,一张表记录进出所有记录也是常见设计。
至于其它书上讲的东西,仅供参考。效率的问题要具体看表中的数据分布和索引的设计,
至于其它书上讲的东西,仅供参考。效率的问题要具体看表中的数据分布和索引的设计,
#7
给商品表上添加库存字段,在入库或者出库的时候对其进行加减法