查询Sql联接
我有三张桌子 tblLink:(LinkId,LinkName,GroupId,SubGroupId)查询Sql联接,sql,sql-server,sql-server-2005,Sql,Sql Server,Sql Server 2005,我有三张桌子 tblLink:(LinkId,LinkName,GroupId,SubGroupId) GroupId和SubGroupId是tblGroup和tblSubGroup中的外键 tblGroup:(GroupId,GroupName) tblSubGroup:(子组ID,子组名称) 在tblLink中,SUBSUBID允许为Null,但GroupId是必需的 我想为tblLink中的每个LinkId获取LinkName、GroupName和SubName 我写了一个问题 从tblL
GroupId和SubGroupId是tblGroup和tblSubGroup中的外键
tblGroup:(GroupId,GroupName)
tblSubGroup:(子组ID,子组名称) 在tblLink中,SUBSUBID允许为Null,但GroupId是必需的 我想为tblLink中的每个LinkId获取LinkName、GroupName和SubName
我写了一个问题 从tblLink L中选择L.LinkName、G.GroupName、SG.SubGroupName
左连接
tblSubGroup SG
在
(L.subgroup id=SG.subgroup id)
内部联接
TBL组G
在
(L.GroupId=G.GroupId)
如果某个LinkId没有子组,我想显示NotExist而不是Null,您可以使用COALESCE(而不是ISNULL)来实现这一点,只需使查询更具可移植性即可。@Technowise:注意隐式数据类型转换,然后。。。如果subgroup name是varchar(5)或char(50),则可以将其强制转换为varchar(8)以匹配文本NotExist。使用ISNULL时,它将按照SubName数据类型保持。Portable SQL=更改合同?@Technowise,你这里说的Portable是什么意思。什么是联合,请详细说明。
SELECT
L.LinkName, G.GroupName,
ISNULL(SG.SubGroupName, 'NotExist') AS SubGroupName
FROM
Link L
....