这个sql怎么写?
表1:
id fuwxm cbjg b3
1 2 2 1
2 1 2 2
表2
a1 dm mc
fwxm 1 zj
fwxm 2 dl
fwxm 3 pq
cbjg 1 北京
cbjg 2 上海
其中,表1中fwxm列对应的是表2中的a1列为fwxm的项目,表1中cbjg列对应的是表2中的a1列对应的cbjg对应的列,现在要查询出来这样的:
1 dl 上海 1
2 zj 上海 2
我用的是oracle9i数据库。
[解决办法]
表1后两个字段没给说明啊
结果最后和最前的数字也没给说明,只能瞎猜了
select a.id,b.mc,c.mc,a.b3
from 表1 a inner join 表2 b on
a.fuwxm=b.dm
inner join 表2 c on
a.cbjg=c.dm
where b.a1='fwxm' and c.a1='cbjg'
[解决办法]
你也可以把where里的两个条件分别加到inner join 的两个on后
[解决办法]
select a.id,b.mc,c.mc,a.b3 from table1 as a,
(select a1,dm,mc from table2 where a1='fwxm') as b,
(select a1,dm,mc from table2 where a1='cbjg') as c
where a.fuwxm = b.dm
and a.fuwxm = c.dm
;
[解决办法]
create table tb1(id int,fuwxm int,cbjg int,b3 int)insert into tb1 values(1 , 2 , 2 , 1) insert into tb1 values(2 , 1 , 2 , 2) create table tb2(a1 varchar(10), dm int, mc varchar(10))insert into tb2 values('fwxm' , 1 , 'zj') insert into tb2 values('fwxm' , 2 , 'dl') insert into tb2 values('fwxm' , 3 , 'pq') insert into tb2 values('cbjg' , 1 , '北京') insert into tb2 values('cbjg' , 2 , '上海')goselect m.id, (select mc from tb2 n where a1 = 'fwxm' and dm = m.fuwxm) fwxm , (select mc from tb2 n where a1 = 'cbjg' and dm = m.fuwxm) cbjg , b3from tb1 mdrop table tb1 , tb2/*id fwxm cbjg b3 ----------- ---------- ---------- ----------- 1 dl 上海 12 zj 北京 2(所影响的行数为 2 行)*/