首页新闻找找看学习计划

想过的一个具有从属关系的索引视图

0
悬赏园豆:20 [已解决问题] 解决于 2013-12-09 14:31

父子表分别为:Ftable,Stable
关系为:父->子是一对多的关系.

Ftable:
ID CODE
1   A
2   B
3   C


Stable:(ITEMID为自增,ID与Ftable是外键的关系)
(BELONG表示当前行的数据对应于本表中的ITEMID)
ITEMID ID    QTY     BELONG
1         1     11
2         1     12.1
3         1     13
4         2     11         1
5         2     12.1      2

上面的Stable中的ITEMID为4,5的两行数据表示
分别来自于ITEMID=1和ITEMID=2的数据


现在想要的结果是制作一个索引视图,其结果如下图所示:
(索引视图的规范不需我介绍了吧)
ID CODE    ITEMID    QTY     BELONG
1   A         4              11        1
1   A         5              12.1     2

chanchaw的主页 chanchaw | 初学一级 | 园豆:73
提问于:2013-12-06 09:33
< >
分享
最佳答案
0

select f.*, c.ITEMID, c.Qty, c.Belong
from STABLE p
inner join STABLE c on p.ITEMID = c.BELONG
inner join FTABLE f on p.ID = f.id
order by c.belong

收获园豆:20
junjieok | 小虾三级 |园豆:779 | 2013-12-06 13:32

创建view

 

create or replace view v_viewName as
select f.*, c.ITEMID, c.Qty, c.Belong
from STABLE p
inner join STABLE c on p.ITEMID = c.BELONG
inner join FTABLE f on p.ID = f.id
order by c.belong

执行

select * from v_viewName

junjieok | 园豆:779 (小虾三级) | 2013-12-06 13:37

@junjieok: 

inner join STABLE c on p.ITEMID = c.BELONG

这一句在某些情况下会有点问题了.

原本的设计是入库单和出库单都是父子表关系(1对多的关系)

入库单表头(客户,订单等等的信息)在父表中以一条记录的形式存在.

产品的明细数据在子表中存在,并且很多情况下都是多条记录.

出库单跟入库单的模式一样,不过在出库单的每条明细记录后面有个字段Belong标注了

当前明细就来自于入库单的哪一条明细数据.

当入库单入了100条数据,其对应的出库但只出了90条.

使用你给出的SQL获取的结果是90条,也就是说只能获取出库数据.

不可同时获取入库数量和出库数量?

结果为如下形式:

产品,入库数量,出库数量

chanchaw | 园豆:73 (初学一级) | 2013-12-07 14:11

@chanchaw: 不太理解你的业务但我觉得简单改一下sql就可以实现

junjieok | 园豆:779 (小虾三级) | 2013-12-07 16:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册