怎么对用union得到的视图进行分页查询?

飞火流星02027 2009-10-13 01:24:20
--图稿信息视图
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_ZLLR_TGXX]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T_ZLLR_TGXX]
GO

CREATE TABLE [dbo].[T_ZLLR_TGXX] (
[N_TGID] [int] IDENTITY (1, 1) NOT NULL ,
[C_TGMC] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[C_GJZ] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[N_TGLX] [tinyint] NULL , --图稿类型 1:下厂图片,2:素材图片,3:效果图片(只有三种)
[C_FXRQ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[N_KFBM] [smallint] NULL ,
[N_BQXX] [tinyint] NULL ,
[C_BQBZ] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[N_TGTC] [tinyint] NULL ,
[N_TGLB] [tinyint] NULL ,
[C_SCLJ] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_XGSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ1] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ2] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[N_SCZ] [smallint] NULL ,
[N_SCZBM] [smallint] NULL ,
[N_PPDH] [int] NOT NULL ,
[N_GDZT] [tinyint] NOT NULL
) ON [PRIMARY]
GO

--文字信息视图
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_ZLLR_WZZL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T_ZLLR_WZZL]
GO
CREATE TABLE [dbo].[T_ZLLR_WZZL] (
[N_WZID] [int] IDENTITY (1, 1) NOT NULL ,
[C_WZBT] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[C_GJZ] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCLJ] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_XGSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ1] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ2] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[N_SCZ] [smallint] NOT NULL ,
[N_SCZBM] [smallint] NOT NULL ,
[C_BZ] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[N_PPDH] [int] NULL ,
[N_GDZT] [tinyint] NOT NULL
) ON [PRIMARY]
GO

--资料信息视图 (包括图稿信息和文字信息)
create view V_ZLLR_ZLXX
as
select N_TGID N_ZLID,C_TGMC C_ZLMC,C_GJZ,N_TGLX N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1,C_ZZ2,N_SCZ,N_SCZBM,C_BQBZ C_BZ,N_PPDH,N_GDZT,C_FXRQ,N_KFBM,N_BQXX,N_TGTC,N_TGLB
from T_ZLLR_TGXX --图稿资料信息表
union
select N_WZID N_ZLID,C_WZBT C_ZLMC,C_GJZ,4 N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1,C_ZZ2,N_SCZ,N_SCZBM,C_BZ,N_PPDH,N_GDZT,'' C_FXRQ,'' N_KFBM,'' N_BQXX,'' N_TGTC,'' N_TGLB
from T_ZLLR_WZZL --文字资料信息表 N_ZLLX(资料类型)4:文字资料

--我想对V_ZLLR_ZLXX表结果进行分页查询,表格中显示结果先按资料类型排序(升序),再按ZLID排序(升序)(内部排序)
--为了对V_ZLLR_ZLXX表结果进行分页查询,我想写一个分页的查询语句可是视图没有单独的列充当主键
--现在不知道怎么解决这个问题,在创建视图是时候可不可以增加一个字段,让来作为主键
--下面的分页查询其结果是图稿和文字混合显示的
select top 5 N_ZLID,C_ZLMC,C_GJZ,N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1+','+C_ZZ2 C_ZZ
from V_ZLLR_ZLXX
where (N_ZLID not in (select top 10 N_ZLID from V_ZLLR_ZLXX
order by N_ZLID))
order by N_ZLID

有没有方法:
在创建视图是时候可不可以增加一个字段,让来作为主键
或者是怎么写sql语句对视图查询结果分页?
...全文
138 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞火流星02027 2009-10-13
  • 打赏
  • 举报
回复
加字段怎么加啊,加哪里啊,创建视图的时候能加吗?
飞火流星02027 2009-10-13
  • 打赏
  • 举报
回复
上面的格式没弄好,请看下面:

--图稿信息视图
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_ZLLR_TGXX]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T_ZLLR_TGXX]
GO

CREATE TABLE [dbo].[T_ZLLR_TGXX] (
[N_TGID] [int] IDENTITY (1, 1) NOT NULL ,
[C_TGMC] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[C_GJZ] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[N_TGLX] [tinyint] NULL , --图稿类型 1:下厂图片,2:素材图片,3:效果图片(只有三种)
[C_FXRQ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[N_KFBM] [smallint] NULL ,
[N_BQXX] [tinyint] NULL ,
[C_BQBZ] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[N_TGTC] [tinyint] NULL ,
[N_TGLB] [tinyint] NULL ,
[C_SCLJ] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_XGSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ1] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ2] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[N_SCZ] [smallint] NULL ,
[N_SCZBM] [smallint] NULL ,
[N_PPDH] [int] NOT NULL ,
[N_GDZT] [tinyint] NOT NULL
) ON [PRIMARY]
GO

--文字信息视图
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[T_ZLLR_WZZL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[T_ZLLR_WZZL]
GO
CREATE TABLE [dbo].[T_ZLLR_WZZL] (
[N_WZID] [int] IDENTITY (1, 1) NOT NULL ,
[C_WZBT] [varchar] (100) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[C_GJZ] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCLJ] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL ,
[C_SCSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_XGSJ] [varchar] (16) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ1] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[C_ZZ2] [varchar] (30) COLLATE Chinese_PRC_CI_AS NULL ,
[N_SCZ] [smallint] NOT NULL ,
[N_SCZBM] [smallint] NOT NULL ,
[C_BZ] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
[N_PPDH] [int] NULL ,
[N_GDZT] [tinyint] NOT NULL
) ON [PRIMARY]
GO

--资料信息视图 (包括图稿信息和文字信息)
create view V_ZLLR_ZLXX
as
select N_TGID N_ZLID,C_TGMC C_ZLMC,C_GJZ,N_TGLX N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1,C_ZZ2,N_SCZ,N_SCZBM,C_BQBZ C_BZ,N_PPDH,N_GDZT,C_FXRQ,N_KFBM,N_BQXX,N_TGTC,N_TGLB
from T_ZLLR_TGXX --图稿资料信息表
union
select N_WZID N_ZLID,C_WZBT C_ZLMC,C_GJZ,4 N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1,C_ZZ2,N_SCZ,N_SCZBM,C_BZ,N_PPDH,N_GDZT,'' C_FXRQ,'' N_KFBM,'' N_BQXX,'' N_TGTC,'' N_TGLB
from T_ZLLR_WZZL --文字资料信息表 N_ZLLX(资料类型)4:文字资料

--我想对V_ZLLR_ZLXX表结果进行分页查询,表格中显示结果先按资料类型排序(升序),再按ZLID排序(升序)(内部排序)
--为了对V_ZLLR_ZLXX表结果进行分页查询,我想写一个分页的查询语句可是视图没有单独的列充当主键
--现在不知道怎么解决这个问题,在创建视图是时候可不可以增加一个字段,让来作为主键
--下面的分页查询其结果是图稿和文字混合显示的
select top 5 N_ZLID,C_ZLMC,C_GJZ,N_ZLLX,C_SCLJ,C_SCSJ,C_XGSJ,C_ZZ1+','+C_ZZ2 C_ZZ
from V_ZLLR_ZLXX
where (N_ZLID not in (select top 10 N_ZLID from V_ZLLR_ZLXX
order by N_ZLID))
order by N_ZLID

有没有方法:
在创建视图是时候可不可以增加一个字段,让来作为主键
或者是怎么写sql语句对视图查询结果分页?




--小F-- 2009-10-13
  • 打赏
  • 举报
回复
---类似这样
select
top 10 b.*
from
(select top 20 主键字段,排序字段 from 表名 order by 排序字段 desc) a,表名 b
where
b.主键字段 = a.主键字段
order by
a.排序字段
sgtzzc 2009-10-13
  • 打赏
  • 举报
回复
先order by 类型,再order by id,这样图稿和文字就不会混合显示了

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧