SQL读取数据库

来源:百度知道 编辑:UC知道 时间:2024/05/08 17:11:37
现在有两个表:UserName 和 Gift 两个表
UserName:有ID 和 NetName两个字段
Gift :有SendNameID(不为空) 和 ReciveNameID (可以为空)
我自己的SQL语句读取
select a.NetName as aNetName,b.NetName as bNetName
from UserName as a,UserName as b,Gift
where Gift.SendNameID=a.ID and Gift.ReciveNameID=b.ID
如果是这样的话ReciveNameID为空的数据就读不出来了!!
如果把 Gift.ReciveNameID=b.ID 去掉的话,又会出现重复的语句

请教:怎么解决,,????谢谢!!!

两种方法:
1,select a.NetName as aNetName,b.NetName as bNetName
from Gift
left outer join
UserName as a on Gift.SendNameID=a.ID
left outer join
UserName as b on Gift.ReciveNameID=b.ID
这种方法是使用了联接,具体可以去看看左连接(left outer join) ,右连接(right outer join),全连接(full outer join)

2,select aNetName=(select NetName from UserName where ID=SendNameID) ,
bNetName=(select NetName from UserName where ID=ReciveNameID) from Gift
这种方法是使用了计算表达式

结果是一样的,看你喜欢用哪种了

select a.NetName as aNetName,b.NetName as bNetName
from UserName as a,UserName as b,Gift as c
where c.SendNameID=a.ID and c.ReciveNameID=*b.ID
group by a.NetName ,b.NetName