请高手帮帮忙SQL语句 ( 积分: 50 )

  • 主题发起人 主题发起人 xx6620063
  • 开始时间 开始时间
X

xx6620063

Unregistered / Unconfirmed
GUEST, unregistred user!
TAB1
编码 地址
001 街上3号
002 街上2号
TAB2
地址编码 与户主关系 姓名 性别 出生年月 页码
001 户主 杨二 男 1985-08-01 25
001 长女 小三 男 1988-08-01 25
001 长子 小华 男 1987-08-04 25
如何查询得到如下结果://如何获得地址和户主姓名
地址 姓名 性别 出生年月 户主姓名 页码
街上3号 小三 男 1988-08-01 杨二 25
街上3号 小华 男 1987-08-04 杨二 25
 
select tab1.地址,tab2.姓名,tab2.性别,tab2.出生年月,tab2.户主姓名,tab2.页码
from tab1,tab2 where tab1.编码=tab2.地址编码
 
select b.地址,a.姓名,a.性别,a.出生年月,c.姓名,a.页码 from
tab2 a
left join tab1 b on a.地址编码= b.编码
left join (select 地址编码,姓名 from TAB2 where 与户主关系='户主' ) c
on a.地址编码= c.地址编码
where a.与户主关系<>'户主'
 
select tab1.地址,tab2.姓名,tab2.性别,tab2.出生年月,tab2.户主姓名,tab2.页码
from tab1,tab2 where tab1.编码=tab2.地址编码and tab2.与户主关系<>'户主'
 
select tab1.地址,tab2.姓名,tab2.性别,tab2.出生年月,
(select 姓名 from tab2 where tab2.与户主关系='户主' and 地址编码='001') as 户主姓名,tab2.页码 from tab1,tab2 where tab1.编码=tab2.地址编码

不知"地址编码"还是"页码"作为唯一识别,如果是页码就改成 and 页码='25'
 
SELECT 地址 姓名 性别 出生年月 户主姓名 页码
FROM TAB1,TAB2
WHERE 编码=地址编码
 
weichao9999:能说说语法好吗?在ACCESS中是否可以
 
都是高人!

to weichao9999
写的像教科书:)

都可以在ACCESS中使用
 
这是一个多表联合查询,主表应该是TAB2,所以采用左联合‘left join’。地址很容易就出来了,有点难点的地方是户主的显示,你可以把问题分开看,要显示户主就应该有一个‘地址编码和户主’的数据集和,而这个数据隐含在tab2中,此时就应该使用派生表技术,用(select 地址编码,姓名 from TAB2 where 与户主关系='户主' ) c 得到‘地址编码和户主’的数据集和,c可以被看作一个物理表使用,然后再做一下左联合,就得到你要要的结果了。
派生表在复杂的查询中用处很大,功能也很强,但是也比较耗资源。
 
Weichao9999测试符合要求,谢谢,其它也散的分吧,不多,别生气
 
后退
顶部