FOR ALL ENTRIES
有两个表,KNA1 客户主数据表和KNVV客户主销售表。
客户主数据里面的一个客户,在客户主数据销售表里有多少销售记录呢?
很简单,就来join嘛。我要看到KNA1里面的客户和客户描述,还要看到KNVV里面这个客户的销售组织,谁创建的,运输条件等等。KNVV里面会有很多条。
那一般情况下我们是直接定义内表。
然后工作区,然后select……from kna1 as kna1 inner join knvv as knvv on kna1~knnur = knvv~knnur into table it_table where kna1~knnur = p_knnur.
然后 loop at it_table into wa_table.
write:…
endloop.
那其实这里还有另外一个语法,就是for all entries in
那这个要怎么写呢?
其实意思很简单,和join是一个功能。
只是要定义两个内表。要把第一个表的要的字段选到第一个内标里,然后把第二个表要的字段再放到第二个内表里,前提是有个连接条件就是第二个内表与第一个内表的公共字段值相同。这其实就是一个inner join。
相比inner join还多定义了一个内表。这有啥意思呢?
再回头来看下inner join:
就是少了一些A~ 啥的,就看个人喜好吧。
看完了之后我发现我还挺喜欢for all entries in的。
虽然都是一个意思,但是不用写那许多波浪号。
总结下前三天
我也不知道该总结啥。
瞎总结。
如果我接了个活,但是我迟迟不做。不是我拖延。而是我有些知识没贯通,没办法做那么快。
以上是吐槽。
回顾前三天,我到现在差不多懂了一些语法。
声明结构和表,工作区间,还有变量。
然后open sql的一些select from where
以及一些逻辑 do enddo
加减啥的。
还有的就是数据库表的连接,主键外键,参考特性(就是如果你是个数量或金额的字段,那你得有个单位参考)
还有就是数据库表是怎么设计的。
这一点就是,看应用场景。来设计数据库表。
也就是实际业务,我当前确实还没有接触过实际业务,唉,我也是有够菜的。不过这也不是我的工作范围啊。
从物料的场景来看。
我一个公司,采购的原材料,需要放到我公司的仓库里,我肯定有很多个仓库,每个仓库里放了多少我的不同原材料。我这些物料,有不同的分类,还有毛重和净重。
而且我这些原材料,可以发送给不同的国家我的子公司去,于是我这个物料有很多不同语言的描述。
也就是说我可能有如下这些字段:
毛重就是加上包装的重量。
那么我如果就把这些东西放一张表里,当然是可以的。
但是很乱,就。
需要很多列作为主键,而且有很多冗余。
这时候,需要从数据库设计的角度来分解这张表。
把这张表分解成很多个表,这些表要么可以通过主键连接,要么可以通过外键连接。这些分解的小表,比如说物料描述表,仓库描述表,物料组表。每一个都很精简。但是又必须得和主表关联。在有了这些小表的基础上,数据的冗余大量降低。
而且,比如说我想知道某种物料存在哪里。那我就直接和物料存货表关联,得到这种物料的存储仓库,再和仓库表关联,得到仓库的名字。
然后比如说我想知道某一类物料的存量。那我就得从物料表找那一组物料,找到所有改组物料的物料编号,然后去物料存储表找到所有相应的仓库以及存量。
在我们去设置表的时候,要注意数量类型的要给单位。