2010-01-04 138 views
2

我有三个表。查询Sql加入

tblLink:(LINKID,LINKNAME,GroupId的,SubGroupId)
groupId和SubGroupId在tblGroup和tblSubGroup
tblGroup外键:(GroupId的,组名)
tblSubGroup:(SubGroupId,SubGroupName)

in tblLink允许SubGroupId为空但GroupId为强制。

我想在tblLink
获取链接名称,组名,SubGroupName为每LINKID 我写了一个查询

SELECT L.LinkName,G.GroupName,SG.SubGroupName FROM tblLink大号
左联接
tblSubGroup SG
ON
(L.SubGroupId = SG.SubGroupId)
内部联接
tblGroupģ
ON
(L.GroupId = G.GroupId)

如果对于一些LINKID我要显示的办法抹杀代替空

回答

4
SELECT 
    L.LinkName, G.GroupName, 
    ISNULL(SG.SubGroupName, 'NotExist') AS SubGroupName 
FROM 
    Link L 
.... 
+3

无子组你可以使用COALESCE来做到这一点(而不是ISNULL),只是让你的查询更加便携。 – Technowise 2010-01-04 12:27:31

+1

@Technowise:注意隐式数据类型转换然后...如果SubGroupName是varchar(5)或char(50),它可以转换为varchar(8)以匹配文字NotExist。使用ISNULL时,它保持按照SubGroupName数据类型。便携式SQL =更改合同? – gbn 2010-01-04 12:30:18

+0

@Technowise,你是什么意思,便携式在这里。什么是COALESCE,请详细说明。 – 2010-01-04 12:31:11