问题是这样的
多个表间的查询
table1(tno,name1)
table2(tno,name2,idcard)
table3(idcard,name3)前提table1和table2的数据是一一对应的(通过tno连接),table2与table3通过idcard连接,但是table3中的idcard有重复的情况(idcard:身份证号)要实现的是把三个表中的name1,name2,name3查出来(table3中的idcard若有重复的则取一个name3就可以了)大侠们帮帮忙吧,,,
多个表间的查询
table1(tno,name1)
table2(tno,name2,idcard)
table3(idcard,name3)前提table1和table2的数据是一一对应的(通过tno连接),table2与table3通过idcard连接,但是table3中的idcard有重复的情况(idcard:身份证号)要实现的是把三个表中的name1,name2,name3查出来(table3中的idcard若有重复的则取一个name3就可以了)大侠们帮帮忙吧,,,
解决方案 »
- SQL 相同关建字段 某列值相加
- 动态数据比较用动态SQL或存储过程实现。
- 某些sql执行后,在消息中,会发现有worktable,I/O很大,解释此现象
- 统计问题
- 触发器如果定位的数据更新行?
- 我想请问一下, 大家在开发数据库软件时, 是不是尽量多的在服务器端写存储过程和出发器, 少在客户端写sql语句??? 这其中有什么讲究吗?
- 帮忙解释下该数据库错误提示产生的 原因
- 关于sql查询遇到 null 的处理
- 一个关于数据库的模模糊糊查询的问题,火急!大虾请进!大分相送!
- 求一条SQL语句,游标的能否解决的SQL语句
- 递归问题,高手帮忙
- 请问sql2005的数据库能直接备份到sql2000么?
select a.*,b.*,c.name3
from table1 as a
inner join table2 as b on a.tno=b.tno
inner join (select idcard,min(name3) as name3 from table3 group by idcard) as c on b.idcard=c.idcard
select a.name1,b.name2,c.name3
from table1 a
left join table2 b
on a.tno = b.tno
left join table3 c
on b.idcard = c.idcard
from table1 t1 join table2 t2 on t1.tno=t2.tno
join (select idcard, name3=min(name3) from table3 group by idcard) t3 on t2.idcard=t3.idcard
(select idcard,max(name3) name3 from table3 group by idcard) t3
where t1.tno = t2.tno and t2.idcard = t3.idcard
select
Name2,
[Name]=case when (select count(1) from table3 where idcard=c.idcard)>1 then min(name3) else Name1 end--记录大于1取Name1
from
table1 a
join
table2 b on a.tno=b.tno
join
table3 c on b.idcard=c.idcard
group by Name2,Name1
今天早上看了各位的回帖,还是有问题to wangtiecheng: 您写的这种group by 以后再取其中一个的方法理论上应该是对的,
可是我试了下,还是有问题,
我的table1,table2可以一一对应切记录数为1659,用了你的方法后,三个表查询出来的数据记录数不是1659而
是少了几十条记录,这是怎么回事呀?
distinct
a.name1,
b.name2,
c.name3
from table1 a
join table2 b on a.tno = b.tno
left join table3 c on c.idcard = b.idcard
table3 as t3
where t1.tno = t2.tno and t2.idcard = t3.idcard
group by t3.idcaard
from table1 as a
left join table2 as b on a.tno=b.tno
left join (select idcard,min(name3) as name3 from table3 group by idcard) as c on a.idcard=c.idcard
(select idcard,name3 from table3 group by idcard,name3) t3
where t1.tno = t2.tno and t2.idcard = t3.idcard