sql 代码

来源:百度知道 编辑:UC知道 时间:2024/05/25 08:09:27
请教SQL高人,帮忙翻译一下以下三段语句各是什么意思?请尽量详细点~谢谢!

Select sys.Netbios_Name0, fcm.SiteCode, sys.User_Domain0, sys.User_Name0, sys.Operating_System_Name_and0, arp.DisplayName0
FROM v_R_System sys
JOIN v_GS_ADD_REMOVE_PROGRAMS arp ON sys.ResourceID = arp.ResourceID
JOIN v_FullCollectionMembership fcm on sys.ResourceID=fcm.ResourceID
WHERE DisplayName0 = @displayname and fcm.CollectionID=@CollID

begin
if (@__filterwildcard = '')
Select DISTINCT DisplayName0 FROM v_GS_ADD_REMOVE_PROGRAMS order by DisplayName0
else
Select DISTINCT DisplayName0 FROM v_GS_ADD_REMOVE_PROGRAMS
WHERE DisplayName0 like @__filterwildcard
order by DisplayName0
end

begin
if (@__filterwildcard = '')
select CollectionID, Name from v_Collection order by Name
else
select CollectionID, Name from v_Collection
WHERE CollectionID like @__filterwildcard
order by Name
end

第一段:v_R_System、v_GS_ADD_REMOVE_PROGRAMS、v_FullCollectionMembership进行内连接,选出这三张表都存在的记录,并按where条件进行过滤。

第二段:
如果@__filterwildcard为空的话,查询表v_GS_ADD_REMOVE_PROGRAMS中DisplayName0字段不重复的记录,并按DisplayName0排序。@__filterwildcard不为空的话,查询表v_GS_ADD_REMOVE_PROGRAMS中DisplayName0字段不重复的记录,并按where条件进行过滤,最后按DisplayName0排序。

第三段:
与第二段类似,只是换了下表名和字段名。

第一段:
从表v_R_System中取出字段Netbios_Name0、User_Domain0、 User_Name0、Operating_System_Name_and0,
从表v_FullCollectionMembership中取出字段SiteCode,
从表v_GS_ADD_REMOVE_PROGRAMS中取出字段DisplayName0;join是联接,意思是并且三个表的ResourceID 相同,并且v_GS_ADD_REMOVE_PROGRAMS表的DisplayName0等于变量 @displayname,v_FullCollectionMembership表的ResourceID要 等于设定的变量@CollID 。简单点是选出三张表都存在的,并且等于变量@displayname、@CollID的记录。

按照Transact-SQL 语法说明,没有直接用join的,标准的内联接是INNER JOIN 。不过,用join是一样的结果,还不如直接加到where条件中效率高一些。

第二段:是一段过程语句。
如果@__filterwildcard为空的话,查询表 v_GS_ADD_REMOVE_PROGRAMS中字段DisplayName0不重复的记录,并按DisplayName0排序。 如果@__filterwildcard不为空的话,查询表v_GS_