目前有三张表: 描述表 A(no,name1)[上万],业务数据表 B(no,...,info,)[共两记录条],描述表 C(no,address)[一条]。
select a~no,
from A
inner join B
on A~no = b~no
inner(or left or right) join C
on B~no = C~no
where ...
into ...
目前想达到的效果是两条记录,都有 name1,一条记录有 adress,一条没有 address。 因为是二次开发,表结构是不可更改的。
no | name ---|--- 1 | 小李 2 | 小王 ... | ... 10000 | 小王
no | info1 | info2 ---|---|--- 1 | info1 | info2 2 | info1 | info2
no | adress ---|--- 1 | 云南
no | info1 | info2 | name | adress ---|---|---|---|--- 1 | info1 | info2 | 小李 | 云南 2 | info1 | info2 | 小王 | null
1
tankren 2019-06-27 10:04:40 +08:00
ABAP????
|
2
jay0726 2019-06-27 10:12:42 +08:00
没明白啥意思 三张表联合查询查出两条数据,一条要有 address,一条 address 为空???
|
3
zz656565 2019-06-27 10:17:18 +08:00
|
4
ourzhang 2019-06-27 10:21:00 +08:00
A inner join B left join C
|
5
c4f36e5766583218 2019-06-27 10:21:50 +08:00
没看懂问题。。。我假设
表 A 里有数据 A.no1, A.name1 A.no2, A.name2 ... A.no3, A.name3 表 B 里有数据 B.no1, B.info1 B.no2, B.info2 表 C 里有数据 C.no1, C.address1 上面的各表的 no1=no1, no2=no2 比如 select * from A right join B on A.no=B.no left join C on B.no=C.no; 查出来如下 no1, name1, no1, info1, no1, address1 null, null, no2, info2, null, null 你列一下你想要查到什么样效果的结果?按我给出的样式 |
6
zzcworld 2019-06-27 10:36:55 +08:00
记住要先用 inner join 再用 left join,因为始终都是以第一章表( select from 的)为基准。inner join 的有地址,left join 的没有地址
|
7
ayumilove 2019-06-27 10:37:20 +08:00
如果是 Oracle 可以 用 rownum 实现。
|
8
ayumilove 2019-06-27 10:58:03 +08:00
|
9
c4f36e5766583218 2019-06-27 13:21:25 +08:00
https://www.v2ex.com/t/577872?p=1#r_7543598 写错了 fix
比如 select * from A join B on A. no=B. no left join C on B. no=C. no; 查出来如下 no1, name1, no1, info1, no1, address1 no2, name2, no2, info2, null, null |
10
muchengxue 2019-06-27 14:59:07 +08:00
相信回答的人,更喜欢你用几张 demo 表,更好回答
|
13
wozhizui OP |
16
wozhizui OP @tankren 是 abap,第二个 data 表是+data( select * from ... into zdata as b),所以只能这个顺序写。
|
17
wozhizui OP ## demo 表
#### 1. A 表-描述表 no | name ---|--- 1 | 小李 2 | 小王 ... | ... 10000 | 小王 #### 2. B 表-业务数据表 no | info1 | info2 ---|---|--- 1 | info1 | info2 2 | info1 | info2 #### 3. C 表-描述表 2 no | adress ---|--- 1 | 云南 #### result 表 no | info1 | info2 | name | adress ---|---|---|---|--- 1 | info1 | info2 | 小李 | 云南 2 | info1 | info2 | 小王 | null |
18
c4f36e5766583218 2019-06-27 16:27:26 +08:00
https://www.v2ex.com/t/577872?p=1#r_7545691
那不就是最简单的多表查询问题。有什么疑问吗? select A. no , B. info1, B. info2, A. name , C. address from A join B on A. no=B. no left join C on B. no=C. no |
19
tankren 2019-06-27 16:29:59 +08:00
select a~no b~info1 b~info2 a~name c~address
from zxxx1 as a inner join zxxx2 as b on b~no = a~no inner join zxxx3 as c on c~no = a~no into itab1 for all entries in xxxx where xxxxx |
20
jay0726 2019-06-27 16:31:13 +08:00
|
21
c4f36e5766583218 2019-06-27 16:35:00 +08:00
v2ex [部分] 支持 markdown, 凑合着用吧。
|