CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

如何获取某个视图的所有列并知道某列所属的基表(SQLServer 2000)

楼主mklklk()2005-12-27 10:06:40 在 MS-SQL Server / 基础类 提问

使用INFORMATION_SCHEMA.VIEW_COLUMN_USAGE有两个问题:  
  1.得到的是定义视图时用到的所有列,而不仅是视图所包含的列;  
  2.得到的是与基表对应的列.当视图不直接来自基表,就可能会出现视图中多个列对应同一表同一字段,通过INFORMATION_SCHEMA.VIEW_COLUMN_USAGE得到的只是一个字段.  
   
  通过查询视图结构不存在上述问题,但是得不到列所属的基表  
   
  盼各位指点!!! 问题点数:20、回复次数:10Top

1 楼mklklk()回复于 2005-12-27 10:26:17 得分 0

??Top

2 楼lw1a2(一刀 现在改六点下班了:()回复于 2005-12-27 10:27:24 得分 0

sp_depends   视图  
  Top

3 楼dutguoyi(新鲜鱼排)回复于 2005-12-27 10:44:37 得分 0

This   example   lists   the   database   objects   that   depend   on   the   Customers   table.  
   
  USE   Northwind  
  EXEC   sp_depends   'Customers'  
   
  Top

4 楼mklklk()回复于 2005-12-27 10:46:01 得分 0

sp_depends同样存在INFORMATION_SCHEMA.VIEW_COLUMN_USAGE的问题,INFORMATION_SCHEMA.VIEW_COLUMN_USAGE就是建立在sp_depends之上的.  
  不仅要知道视图中的列都来自哪些表的的哪些字段,还要知道这些字段作为视图列的名字.Top

5 楼mklklk()回复于 2005-12-27 11:01:29 得分 0

换种问法:  
  通过sp_columns'viewName'得到了视图的列.  
  如何知道某列对应的[tableName].[fieldName]?Top

6 楼dutguoyi(新鲜鱼排)回复于 2005-12-27 11:35:25 得分 10

USE   pubs  
  IF   EXISTS   (SELECT   TABLE_NAME   FROM   INFORMATION_SCHEMA.VIEWS  
              WHERE   TABLE_NAME   =   'titles_view')  
        DROP   VIEW   titles_view  
  GO  
  CREATE   VIEW   titles_view  
  AS    
  SELECT   title   as   t1,   type,   price,   pubdate  
  FROM   titles  
  GO  
   
  /*  
  name                                                                                   type                           updated   selected   column                                                                                                                                                                                                                                                        
  -----------------------------------------------------------------------------------  
  dbo.titles                             user   table               no             no               pubdate  
  dbo.titles                             user   table               no             no               title  
  dbo.titles                             user   table               no             no               type  
  dbo.titles                             user   table               no             no               price  
  */  
   
  exec   sp_depends   'titles_view'  
   
  drop   view   titles_view  
   
  好像dbo.titles可以体现Top

7 楼mklklk()回复于 2005-12-27 12:00:13 得分 0

问题是如何知道titles_view.t1与titles.title对应?  
  特别是当视图是这种情况  
  CREATE   VIEW   titles_view  
  AS    
  SELECT   title   as   t1,title   as   t2     type,   price,   pubdate  
  FROM   titles  
   
  exec   sp_depends   'titles_view'   的结果集不变Top

8 楼AriesOracle(啥也不会...)回复于 2005-12-27 12:01:31 得分 0

sp_depends   应该可以基本实现楼主的需求了吧,如果想查出嵌套的视图所对应的原表的列的话我觉得自己写语句可能更好,更灵活,具体可以参考sp_depends代码Top

9 楼AriesOracle(啥也不会...)回复于 2005-12-27 12:07:30 得分 10

如果是这样的需求的话,还是自己写语句吧,比如下面的视图  
  use   Northwind  
  create   view   vw_test  
  as  
      select   FirstName   +   '   '   +   LastName   as   FullName  
      from   Employees  
  你希望FullName怎么和原表Employees中的字段对应呢?呵呵  
  所以还是自己写语句更合适,而不是靠SQL   Server提供的系统过程等Top

10 楼mklklk()回复于 2005-12-27 13:03:49 得分 0

楼上说的有道理,看来是需求有问题,否则SQL   server就应该已经提供了,呵呵.非常感谢诸位!Top

相关问题

  • sqlServer 视图问题
  • SQLSERVER视图问题…………………………
  • 新手上路:视图的排列
  • 列表视图控件的用法
  • 列表视图的编辑问题
  • 怎么给视图加上一列 IDENTITY?
  • 如何在asp.net中调用SqlServer视图??
  • 怎么才能让CListView列表视图不自动排列
  • 为什么视图的图标列的列值不在NotesViewEntry.ColumnValues中?
  • 如何在web上实现根据用户隐藏视图列???

关键词

  • 视图
  • 字段
  • view
  • schema
  • 基表
  • depends
  • 知道
  • usage
  • 得到
  • columns

得分解答快速导航

  • 帖主:mklklk
  • dutguoyi
  • AriesOracle

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo