关联数据库的SQL查询问题?

zzzm 2003-09-04 02:57:57
有三个表,父表人员表和两个子表护照表,执照表用‘姓名'主索引关联,每个人都有多本护照,多本执照,其中执照表中的多本执照号码后面数字是相同的,只是前缀不同。护照表中选中的护照记录用BS字段:'*'作了记号,
现在需要查询做了记号的那些护照所对应的:人员表.姓名,人员表.生日,护照表.护照号,执照表.执照号,其中执照号只需要出来任意一个,因为多个号码数字是相同的,请问可以用一条SQL语句表示么?
...全文
32 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzm 2003-10-29
  • 打赏
  • 举报
回复
to xioling:

我已经改成用身份证做主索引了,
每人确实只有一本护照做标记

请继续关注
xiolig 2003-09-12
  • 打赏
  • 举报
回复
你用姓名做关联,有重名现象吗?还有一种可能是你对同一人的多个护照均做了标记。
上述语句的执行结果数与护照表中做了标记的记录数一样多
zzzm 2003-09-12
  • 打赏
  • 举报
回复
还是不行,执照号出来的更多了
xiolig 2003-09-12
  • 打赏
  • 举报
回复
SELECT ryjbqk.xm, ryjbqk.sr, hz.zjhm, zz.zjhm FROM hz;
LEFT JOIN ryjbqk ON ryjbqk.xm=hz.xm;
LEFT JOIN zz ON zz.xm=hz.xm;
WHERE hz.bs2="*";
INTO TABLE a
zzzm 2003-09-12
  • 打赏
  • 举报
回复
不可以提前么,因为不再有人回答啊
我是这样写的,执照号码还是重啊

select distinct top 1200 ryjbqk.xm,ryjbqk.sr,hz.zjhm,zz.zjhm;
from ryjbqk;
join hz on ryjbqk.xm=hz.xm;
join zz on ryjbqk.xm=zz.xm;
where hz.bs2='*';
order by zz.zjhm;
into table a
xiolig 2003-09-11
  • 打赏
  • 举报
回复
是楼主自己提前的吗?
TOP n 表示只保留前面的 n 条记录,
ORDER BY 排序,这是 TOP 必选项。
老猿的书房 2003-09-09
  • 打赏
  • 举报
回复
楼上说的很清楚了,只是搞不懂为什么用姓名做主索引而不用执照号.姓名可能有重复的啊,难道让他改名?
noproblem12 2003-09-09
  • 打赏
  • 举报
回复
select distinct top 1 a.姓名,a.生日,b.护照号,c.执照号;
from 父表 a ;
join 护照表 b on a.姓名=b.姓名 ;
join 执照表 c on a.姓名=c.姓名
where b.护照记录='*'
zzzm 2003-09-09
  • 打赏
  • 举报
回复
noproblem12(采姑娘的小蘑菇) :

里面的 top l 是什么意思,英文帮助看不利索,
执行出错:SQL:TOP需要一个ORDER BY?

FishOfThink(旅者) :

说的有道理,考虑修改!

zzzm 2003-09-08
  • 打赏
  • 举报
回复
我也是这样写的,问题是执照号要全的,包括前缀,不能用right(),这样的话,执照号有几个,记录就重复几次,其实执照号只需要出来任意一个
我想应该能用一条SQL语句表示的,请再帮我想想吧
magnetmoon 2003-09-04
  • 打赏
  • 举报
回复
执照号码后面数字是相同的,只是前缀不同
如果后10位相同

select distinct a.姓名,a.生日,right(b.护照号,10),c.执照号;
from 父表 a ;
join 护照表 b on a.姓名=b.姓名 ;
join 执照表 c on a.姓名=c.姓名
where b.护照记录='*'

2,723

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧