父子表分别为: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
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
创建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:
inner join STABLE c on p.ITEMID = c.BELONG
这一句在某些情况下会有点问题了.
原本的设计是入库单和出库单都是父子表关系(1对多的关系)
入库单表头(客户,订单等等的信息)在父表中以一条记录的形式存在.
产品的明细数据在子表中存在,并且很多情况下都是多条记录.
出库单跟入库单的模式一样,不过在出库单的每条明细记录后面有个字段Belong标注了
当前明细就来自于入库单的哪一条明细数据.
当入库单入了100条数据,其对应的出库但只出了90条.
使用你给出的SQL获取的结果是90条,也就是说只能获取出库数据.
不可同时获取入库数量和出库数量?
结果为如下形式:
产品,入库数量,出库数量
@chanchaw: 不太理解你的业务但我觉得简单改一下sql就可以实现