送分啦,在线等待,这个SQL怎么实现?(50分)

  • 主题发起人 主题发起人 aq13
  • 开始时间 开始时间
A

aq13

Unregistered / Unconfirmed
GUEST, unregistred user!
我有2个表
表一:
车牌 修理项目
001 AA
001 BB
.....

表2:
车牌 包养项目
001 CC
001 DD
001 EE
.....
我想通过SQL达到这样的效果:
车牌 修理项目 包养项目
001 AA CC
001 BB DD
001 EE
怎么实现啊?
 
SELECT 表一.车牌,修理项目,包养项目 FROM 表一,表二 WHERE 表一.车牌 =表二.车牌
 
SELECT 表一.车牌,修理项目,包养项目 FROM 表一 full join 表二 on 表一.车牌 =表二.车牌
 
select 表一.车牌,表一.修理项目,表二.保养项目 from 表一,表二
Where 表一.车牌(+)=表二.车牌
 
w12345678的是对的
 
w12345678,你写的full,应该是inner
你们都没符合我的要求,
车牌 修理项目 包养项目
001 AA CC
001 BB DD
001 注意这里是空的 EE
 
你们的结果应该是
车牌 修理项目 包养项目
001 AA CC
001 BB DD
001 AA EE
001 BB CC
001 AA DD
001 BB EE
不信试试看吧
 
没有好的意见吗? 网费很贵的啊~~~~~
 
SELECT 表一.车牌,修理项目,包养项目
FROM 表一 left join 表二 on 表一.车牌 =表二.车牌
 
SELECT 表一.车牌,修理项目,包养项目
FROM 表一 left join 表二 on 表一.车牌 =表二.车牌
 
你们有没有试过啊?
我弄下来都不行
 
SELECT b.车牌,'修理项目',b.包养项目 into #temp FROM b
Update #temp set #temp.修理项目=a.修理项目 form #temp ,a
Select * from #temp
 
数据库类型,先!
 
你这样的结果很难通过语句得到。因为从你的描述来看,你只是要求两张表中的数据记录
的物理位置相同,但是在现在的数据库中,物理位置偏偏是最无关的一个属性。
 
Oracle就可以。。。。
 
你用的数据库是什么?
能先说一下吗,不同类型实现也不相同
 
aTable1
id CHAR(4) xm1 CHAR(4)
0001 AA
0001 BB

aTable2
id CHAR(4) xm2 CHAR(4)
0001 CC
0001 DD
0001 EE

最终输出结果:
0001 AA CC
0001 BB DD
0001 NULL EE

同时以下SQL还能防止:atable1.rowcount>atable2.rowcount的问题,保证其正确返回结果集

select a.id,a.xm1,b.xm2
from
(select rownum as num,id,xm1 from atable1) a,
(select rownum as num,id,xm2 from atable2) b
where
a.id=b.id and a.num=b.num
union
select a.id,a.xm1,a.xm2
from
(select rownum as num ,id,'' as xm1,xm2 from atable2) a
where
num>(select max(rownum) as maxnum from atable1)
union
select a.id,a.xm1,a.xm2
from
(select rownum as num ,id,xm1,'' as xm2 from atable1) a
where
num>(select max(rownum) as maxnum from atable2)
 
用 天崖无爱 的没错!
只是稍微改一下
SELECT 表一.车牌,修理项目,包养项目
FROM 表二 left join 表一 on 表一.车牌 =表二.车牌

写成 右连接!
左连接将返回join左侧表中的所有记录以及右侧表中匹配的记录 !
 
学习中。。
 
o我用的是ACCESS2000
用SELECT 表一.车牌,修理项目,包养项目
FROM 表二 left join 表一 on 表一.车牌 =表二.车牌
方法的都没成功
xiaoywh的方法,呵呵,看上去很庞大
 
后退
顶部