日期:2014-05-17  浏览次数:20453 次

三个表关联查询,SQL语句该怎么写
比如我有三个表

表A

ID  NAME

表B

ID  Address  tell

表C

ID  Time

其中ID是相关联的,ID是表A的主键,其他表的外键,我现在想输入一个姓名去查询表A的ID,然后根据ID区查询其他两个表的地址,电话和时间,结果倒是可以查询出来,但是很多结果是重复的,有什么问题呢?

select a.id,a.name,b.id,b.address,b.tell,c.id,c.time from 表A a,表B b,表C c where name='"+name+"'and a.id=b.id and b.id=c.id and c.id=a.id

------最佳解决方案--------------------
select distinct a.id,a.name,b.address,b.tell,c.time from 表A a,表B b,表C c where name='"+name+"'and a.id=b.id and a.id=c.id
------其他解决方案--------------------
SELECT B.*,C.* 
  FROM B INNER JOIN C ON B.ID=C.ID
 WHERE B.ID IN(SELECT ID FROM A WHERE NAME='"+name+"')
------其他解决方案--------------------
distinct。。。。这个是重点。select distinct ****
------其他解决方案--------------------
2楼正解

引用:
SELECT B.*,C.* 
  FROM B INNER JOIN C ON B.ID=C.ID
 WHERE B.ID IN(SELECT ID FROM A WHERE NAME='"+name+"')