今天发生的事件

​ 这个星期领导给我布置了4个任务今天为止完成了三个。今天下午因为我没有按照流程规范【先复制/u1/forms/inp/的inp文件到自己目录,再修改自己目录下的inp文件,最后提交工单】操作导致修改后的文件没有生效。

可以参考其它的文件,就是在baseTable后面加上@ho01,要搞清除一个inp文件有几个baesTable。

领导给我讲解过一遍没有记住,当时在想怎么写SQL语句。第二天就忘了要参考哪个文件。以后在讲解的时候来一只笔记录一下【有时候讲的东西我其实不理解知道在哪个界面,先把哪个界面记下来然后找到对应的源码看看是怎么出现的】。免得忘记。menu的修改要先备份但menu不用提交工单。

拿到一个工单先找到对应的人理解清楚需求。碰到没有权限查看的界面要对方截图出来,看看menu的名字或者对应inp文件。

报表名称或格式

部门名称/课别/区域/账号/货号/品名

用途

列印附件中中超厂编商品建档明细

部门名称 divisions.name
课别 sections.section_no
区域 items.code
账号 substr(items.usr,5,4)
货号 nvl(store_items.item_no,items.item_no)
品名 items.name
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
SQL(ho04db)>desc divisions
Name Null? Type
------------------------------- -------- ----
DIVISION_NO NOT NULL NUMBER(1)
NAME NOT NULL VARCHAR2(8) ***
CREATED_DATE DATE
CHANGED_DATE DATE

SQL(ho04db)>desc sections
Name Null? Type
------------------------------- -------- ----
SECTION_NO NOT NULL NUMBER(2) ***
NAME NOT NULL VARCHAR2(16)
DIVISION_NO NOT NULL NUMBER(1)
CREATED_DATE DATE
CHANGED_DATE DATE

SQL(ho04db)>desc store_items
Name Null? Type
------------------------------- -------- ----
STORE_NO NOT NULL NUMBER(3)
ITEM_NO NOT NULL NUMBER(7) ***

SQL(ho04db)>desc items
Name Null? Type
------------------------------- -------- ----
ITEM_NO NOT NULL NUMBER(7) ***
SUP_NO NOT NULL NUMBER(6)
GRP_NO NOT NULL NUMBER(3)
SUBGRP_NO NOT NULL NUMBER(3)
USR NOT NULL VARCHAR2(10) ***
NAME NOT NULL VARCHAR2(33) ***
CODE NUMBER(1) ***

SQL(ho04db)>desc groups
Name Null? Type
------------------------------- -------- ----
GRP_NO NOT NULL NUMBER(3)
NAME NOT NULL VARCHAR2(30)
SECTION_NO NOT NULL NUMBER(2) ***
CREATED_DATE DATE
CHANGED_DATE DATE

接下来是整理SQL 要查询 部门名称,课别,区域,账号,货号,品名。涉及到5张表。而且有限制条件就是厂编。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
select c.name  部门名称 ,
d.section_no 课别 ,
a.code 区域 ,
substr(a.usr,5,4) 账号 ,
nvl(b.item_no, a.item_no) 货号 ,
a.name 品名
from items a,
store_items b,
divisions c,
sections d,
groups e ,
items_stat f //这个表是准确的
where f.item_no = a.item_no
and f.item_no =b.item_no(+)
and f.store_no = b.store_no(+)
and c.division_no = d.division_no
and d.section_no = e.section_no
and e.grp_no = a.grp_no
and nvl(b.sup_no,a.sup_no) = 406097


--- 第二种SQL
select c.name 部门名称 ,
d.section_no 课别 ,
a.code 区域 ,
substr(a.usr,5,4) 账号 ,
nvl(b.item_no, a.item_no) 货号 ,
a.name 品名
from items a,
store_items b,
divisions c,
sections d,
groups e ,
store f //这个表是准确的
where f.item_no = a.item_no
and f.store_no = b.store_no(+)
and c.division_no = d.division_no
and d.section_no = e.section_no
and e.grp_no = a.grp_no
and nvl(b.sup_no,a.sup_no) = 406097

查询结果为空。目前还不知道原因,商品信息存在商品主档和分店档,分店档的数据是准确的【因为商品时放在具体的商店里面的】比如items表里面商品A【item_no=123】来自厂商A【sup_no=43321】,但是商品A在store_items里其sup_no=32451,所以这个商品A在某个店里的厂商来自sup_no=43321。联系生活中的例子在家乐福和中百超市中同一个可口可乐可能是不同厂家生产的。

为什么要查询部门名称啊,查询部门编号不好吗。查询部门名称就必须用到【divisions表】divisions.name,会导致。如果是部门编号就可以在sections里面,就减少了一张关联表。

怎么样是反向查询我不理解。

首先在where后增加一个限制条件,看看没有数据,再增加一个限制条件看看没有数据。直到把限制条件全部加上看看在加入哪个限制条件是会导致数据缺失。

或者是表没有用对,但是上述SQL不存在表缺少的问题。到底是哪个限制条件没有用对呢?

我发现最后一个限制条件有错误 and nvl(b.sup_no,a.sup_no) = 406097 ,加上这个就查询不到结果了,原因还不知道。因为有一个部门名称字段,就必须让disivion.divisiono_no=sections.section_no && sections.section_no = groups.section_no。

还有查询的货号item_no到底是主档的呢还是分店档的呢还是items_stat里的呢。现在想怎么感觉是item_stat里的呢,明天写成 nvl(f.item_no,nvl(b.item_no,a.item_no))试试

还有这课别是groups.section_no还是 sections.seciton_no