搜索
 找回密码
 加入

刷贡献修正...排名前100...本人已测试...

chencjh 2009-4-1 12:52:21 1074
运行

EXEC USER_KNIGHTS_RATING_UPDATE
EXEC USER_KNIGHTS_RATING_UPDATE1
EXEC UPDATE_PERSONAL_RANK


CREATE PROCEDURE  UPDATE_PERSONAL_RANK
AS
/*
Author : AKUMA
E-Mail : [email protected]
Edit By ESTHECAT
E-Mail : [email protected]
*/
SET NOCOUNT ON

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING_MONTHLY]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING_MONTHLY]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING_MONTHLY]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING_MONTHLY]

CREATE TABLE [dbo].[KUSER_RATING_MONTHLY] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [nLoyaltyMonthly] [int] NULL ,
) ON [PRIMARY]

CREATE TABLE [dbo].[EUSER_RATING_MONTHLY] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [nLoyaltyMonthly] [int] NULL ,
) ON [PRIMARY]

INSERT INTO KUSER_RATING_MONTHLY
    SELECT TOP 100 USERDATA.strUserId, USERDATA.LoyaltyMonthly
    FROM USERDATA
    WHERE   (USERDATA.Nation = 1) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.LoyaltyMonthly DESC

INSERT INTO EUSER_RATING_MONTHLY
    SELECT TOP 100 USERDATA.strUserId, USERDATA.LoyaltyMonthly
    FROM USERDATA
    WHERE   (USERDATA.Nation = 2) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.LoyaltyMonthly DESC

CREATE  INDEX [IX_RATING_RANK] ON [dbo].[KUSER_RATING_MONTHLY]([nRank]) ON [PRIMARY]
CREATE  INDEX [IX_RATING_RANK] ON [dbo].[EUSER_RATING_MONTHLY]([nRank]) ON [PRIMARY]

DECLARE @CheckUserPersonalRankTable tinyint
SELECT @CheckUserPersonalRankTable = Count(*) FROM USER_PERSONAL_RANK
IF @CheckUserPersonalRankTable < 100
BEGIN

DECLARE @RankName varchar(30)
DECLARE @I int

SET @I = 1
WHILE @I < 101
BEGIN
  IF @I = 1
  BEGIN
   SET @RankName = 'Gold Knight'
  END
  IF @I > 1 AND @I <= 4
  BEGIN
   SET @RankName = 'Silver Knight'
  END
  IF @I > 4 AND @I <= 9
  BEGIN
   SET @RankName = 'Mirage Knight'
  END
  IF @I > 9 AND @I <= 10
  BEGIN
   SET @RankName = 'Shadow Knight'
  END
  IF @I > 25 AND @I <= 50
  BEGIN
   SET @RankName = 'Mist Knight'
  END
  IF @I > 50 AND @I <= 100
  BEGIN
   SET @RankName = 'Training Knight'
  END
  
  INSERT INTO USER_PERSONAL_RANK VALUES (@I,@RankName,0,NULL,0,1000000,0,NULL,NULL,1000000,1000000,GETDATE())

  SET @I = @I + 1
END
END

DECLARE @strCharID char(21)
DECLARE @nIndex smallint
DECLARE @nLoyaltyMonthly int
SET @strCharID = NULL
SET @nIndex = 0
SET @nLoyaltyMonthly = 0

DECLARE CRS_KARUS CURSOR FOR
SELECT nRank, strUserID, nLoyaltyMonthly FROM KUSER_RATING_MONTHLY
OPEN CRS_KARUS
FETCH NEXT FROM CRS_KARUS
INTO @nIndex, @strCharID, @nLoyaltyMonthly
WHILE @@FETCH_STATUS = 0  
BEGIN
      
UPDATE USER_PERSONAL_RANK SET strKarusUserID = @strCharID, nKarusLoyaltyMonthly = @nLoyaltyMonthly WHERE nRank = @nIndex
            
    FETCH NEXT FROM CRS_KARUS
    INTO @nIndex, @strCharID, @nLoyaltyMonthly
END

CLOSE CRS_KARUS
DEALLOCATE CRS_KARUS

DECLARE CRS_HUMAN CURSOR FOR
SELECT nRank, strUserID, nLoyaltyMonthly FROM EUSER_RATING_MONTHLY
OPEN CRS_HUMAN
FETCH NEXT FROM CRS_HUMAN
INTO @nIndex, @strCharID, @nLoyaltyMonthly
WHILE @@FETCH_STATUS = 0  
BEGIN
   
UPDATE USER_PERSONAL_RANK SET strElmoUserID = @strCharID, nElmoLoyaltyMonthly = @nLoyaltyMonthly WHERE nRank = @nIndex
            
    FETCH NEXT FROM CRS_HUMAN
    INTO @nIndex, @strCharID, @nLoyaltyMonthly
END

CLOSE CRS_HUMAN
DEALLOCATE CRS_HUMAN

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING_MONTHLY]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING_MONTHLY]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING_MONTHLY]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING_MONTHLY]

SET NOCOUNT OFF
GO










CREATE PROCEDURE USER_KNIGHTS_RATING_UPDATE
AS
/*
Author : AKUMA
E-Mail : [email protected]
Edit By ESTHECAT
E-Mail : [email protected]
*/
SET NOCOUNT ON

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING]

CREATE TABLE [dbo].[KUSER_RATING] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [nLoyalty] [int] NULL ,
) ON [PRIMARY]

CREATE TABLE [dbo].[EUSER_RATING] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [nLoyalty] [int] NULL ,
) ON [PRIMARY]

INSERT INTO KUSER_RATING
    SELECT TOP 100 USERDATA.strUserId, USERDATA.Loyalty FROM USERDATA
    WHERE   (USERDATA.Nation = 1) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.Loyalty DESC

INSERT INTO EUSER_RATING  
    SELECT TOP 100 USERDATA.strUserId, USERDATA.Loyalty FROM USERDATA
    WHERE   (USERDATA.Nation = 2) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.Loyalty DESC

CREATE  INDEX [IX_RATING_RANK] ON [dbo].[KUSER_RATING]([nRank]) ON [PRIMARY]
CREATE  INDEX [IX_RATING_RANK] ON [dbo].[EUSER_RATING]([nRank]) ON [PRIMARY]

DECLARE @CheckUserKnightsRankTable tinyint
SELECT @CheckUserKnightsRankTable = Count(*) FROM USER_KNIGHTS_RANK
IF @CheckUserKnightsRankTable < 100
BEGIN

DECLARE @RankName varchar(30)
DECLARE @I int

SET @I = 1
WHILE @I < 101
BEGIN
  IF @I = 1
  BEGIN
   SET @RankName = 'Gold Knight'
  END
  IF @I > 1 AND @I <= 4
  BEGIN
   SET @RankName = 'Silver Knight'
  END
  IF @I > 4 AND @I <= 9
  BEGIN
   SET @RankName = 'Mirage Knight'
  END
  IF @I > 9 AND @I <= 10
  BEGIN
   SET @RankName = 'Shadow Knight'
  END
  IF @I > 25 AND @I <= 50
  BEGIN
   SET @RankName = 'Mist Knight'
  END
  IF @I > 50 AND @I <= 100
  BEGIN
   SET @RankName = 'Training Knight'
  END
  
  INSERT INTO USER_KNIGHTS_RANK VALUES (@I,@RankName,NULL,NULL,0,NULL,NULL,0,1000000,GETDATE())

  SET @I = @I + 1
END
END
DECLARE @strCharID char(21)
DECLARE @strKnightsID char(21)
DECLARE @nIndex smallint
DECLARE @nLoyalty int
SET @strCharID = NULL
SET @strKnightsID = NULL
SET @nIndex = 0
SET @nLoyalty = 0

DECLARE CRS_KARUS CURSOR FOR
SELECT nRank, strUserID, nLoyalty FROM KUSER_RATING
OPEN CRS_KARUS
FETCH NEXT FROM CRS_KARUS
INTO @nIndex, @strCharID, @nLoyalty
WHILE @@FETCH_STATUS = 0  
BEGIN
      
UPDATE USER_KNIGHTS_RANK SET strKarusUserID = @strCharID, strKarusKnightsName = @strKnightsID, nKarusLoyalty = @nLoyalty WHERE shIndex = @nIndex
            
    FETCH NEXT FROM CRS_KARUS
    INTO @nIndex, @strCharID, @nLoyalty
END

CLOSE CRS_KARUS
DEALLOCATE CRS_KARUS

DECLARE CRS_HUMAN CURSOR FOR
SELECT nRank, strUserID, nLoyalty FROM EUSER_RATING
OPEN CRS_HUMAN
FETCH NEXT FROM CRS_HUMAN
INTO @nIndex, @strCharID, @nLoyalty
WHILE @@FETCH_STATUS = 0  
BEGIN
   
UPDATE USER_KNIGHTS_RANK SET strElmoUserID = @strCharID, strElmoKnightsName = @strKnightsID, nElmoLoyalty = @nLoyalty WHERE shIndex = @nIndex
            
    FETCH NEXT FROM CRS_HUMAN
    INTO @nIndex, @strCharID, @nLoyalty
END

CLOSE CRS_HUMAN
DEALLOCATE CRS_HUMAN

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING]

SET NOCOUNT OFF
GO










CREATE PROCEDURE USER_KNIGHTS_RATING_UPDATE1
AS
/*
Author : AKUMA
E-Mail : [email protected]
Edit By ESTHECAT
E-Mail : [email protected]
*/
SET NOCOUNT ON

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING]

CREATE TABLE [dbo].[KUSER_RATING] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [strKnightsName] [char] (21) NULL ,
    [nLoyalty] [int] NULL ,
) ON [PRIMARY]

CREATE TABLE [dbo].[EUSER_RATING] (
    [nRank] [int] IDENTITY (1, 1) NOT NULL ,
    [strUserID] [char] (21) NULL,
    [strKnightsName] [char] (21) NULL ,
    [nLoyalty] [int] NULL ,
) ON [PRIMARY]

INSERT INTO KUSER_RATING
    SELECT TOP 100 USERDATA.strUserId, KNIGHTS.IDName, USERDATA.Loyalty FROM USERDATA INNER JOIN KNIGHTS ON USERDATA.Knights = KNIGHTS.IDNum
    WHERE   (USERDATA.Nation = 1) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.Loyalty DESC

INSERT INTO EUSER_RATING  
    SELECT TOP 100 USERDATA.strUserId, KNIGHTS.IDName, USERDATA.Loyalty FROM USERDATA INNER JOIN KNIGHTS ON USERDATA.Knights = KNIGHTS.IDNum
    WHERE   (USERDATA.Nation = 2) AND (USERDATA.City <> 255 ) AND (Authority = 1)
    ORDER BY USERDATA.Loyalty DESC

CREATE  INDEX [IX_RATING_RANK] ON [dbo].[KUSER_RATING]([nRank]) ON [PRIMARY]
CREATE  INDEX [IX_RATING_RANK] ON [dbo].[EUSER_RATING]([nRank]) ON [PRIMARY]

DECLARE @CheckUserKnightsRankTable tinyint
SELECT @CheckUserKnightsRankTable = Count(*) FROM USER_KNIGHTS_RANK
IF @CheckUserKnightsRankTable < 100
BEGIN

DECLARE @RankName varchar(30)
DECLARE @I int

SET @I = 1
WHILE @I < 101
BEGIN
  IF @I = 1
  BEGIN
   SET @RankName = 'Gold Knight'
  END
  IF @I > 1 AND @I <= 4
  BEGIN
   SET @RankName = 'Silver Knight'
  END
  IF @I > 4 AND @I <= 9
  BEGIN
   SET @RankName = 'Mirage Knight'
  END
  IF @I > 9 AND @I <= 10
  BEGIN
   SET @RankName = 'Shadow Knight'
  END
  IF @I > 25 AND @I <= 50
  BEGIN
   SET @RankName = 'Mist Knight'
  END
  IF @I > 50 AND @I <= 100
  BEGIN
   SET @RankName = 'Training Knight'
  END
  
  INSERT INTO USER_KNIGHTS_RANK VALUES (@I,@RankName,NULL,NULL,0,NULL,NULL,0,1000000,GETDATE())

  SET @I = @I + 1
END
END
DECLARE @strCharID char(21)
DECLARE @strKnightsID char(21)
DECLARE @nIndex smallint
DECLARE @nLoyalty int
SET @strCharID = NULL
SET @strKnightsID = NULL
SET @nIndex = 0
SET @nLoyalty = 0

DECLARE CRS_KARUS CURSOR FOR
SELECT nRank, strUserID, strKnightsName, nLoyalty FROM KUSER_RATING
OPEN CRS_KARUS
FETCH NEXT FROM CRS_KARUS
INTO @nIndex, @strCharID, @strKnightsID, @nLoyalty
WHILE @@FETCH_STATUS = 0  
BEGIN
      
UPDATE USER_KNIGHTS_RANK SET strKarusUserID = @strCharID, strKarusKnightsName = @strKnightsID, nKarusLoyalty = @nLoyalty WHERE shIndex = @nIndex
            
    FETCH NEXT FROM CRS_KARUS
    INTO @nIndex, @strCharID, @strKnightsID, @nLoyalty
END

CLOSE CRS_KARUS
DEALLOCATE CRS_KARUS

DECLARE CRS_HUMAN CURSOR FOR
SELECT nRank, strUserID, strKnightsName, nLoyalty FROM EUSER_RATING
OPEN CRS_HUMAN
FETCH NEXT FROM CRS_HUMAN
INTO @nIndex, @strCharID, @strKnightsID, @nLoyalty
WHILE @@FETCH_STATUS = 0  
BEGIN
   
UPDATE USER_KNIGHTS_RANK SET strElmoUserID = @strCharID, strElmoKnightsName = @strKnightsID, nElmoLoyalty = @nLoyalty WHERE shIndex = @nIndex
            
    FETCH NEXT FROM CRS_HUMAN
    INTO @nIndex, @strCharID, @strKnightsID, @nLoyalty
END

CLOSE CRS_HUMAN
DEALLOCATE CRS_HUMAN

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[KUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[KUSER_RATING]

IF EXISTS (select * from sysobjects where id = object_id(N'[dbo].[EUSER_RATING]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [dbo].[EUSER_RATING]

SET NOCOUNT OFF
GO





先新建二个表..把原有的删除...


/****** Object:  Table [dbo].[USER_KNIGHTS_RANK]    Script Date: 27.11.2008 19:29:52 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USER_KNIGHTS_RANK]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[USER_KNIGHTS_RANK]
GO

/****** Object:  Table [dbo].[USER_KNIGHTS_RANK]    Script Date: 27.11.2008 19:29:53 ******/
CREATE TABLE [dbo].[USER_KNIGHTS_RANK] (
        [shIndex] [smallint] NOT NULL ,
        [strName] [char] (21) NOT NULL ,
        [strElmoUserID] [varchar] (21) NULL ,
        [strElmoKnightsName] [char] (21) NULL ,
        [nElmoLoyalty] [int] NULL ,
        [strKarusUserID] [varchar] (21) NULL ,
        [strKarusKnightsName] [char] (21) NULL ,
        [nKarusLoyalty] [int] NULL ,
        [nMoney] [int] NOT NULL ,
        [UpdateDate] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO



/****** Object:  Table [dbo].[USER_PERSONAL_RANK]    Script Date: 27.11.2008 19:30:41 ******/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USER_PERSONAL_RANK]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[USER_PERSONAL_RANK]
GO

/****** Object:  Table [dbo].[USER_PERSONAL_RANK]    Script Date: 27.11.2008 19:30:41 ******/
CREATE TABLE [dbo].[USER_PERSONAL_RANK] (
        [nRank] [smallint] NOT NULL ,
        [strPosition] [char] (21) NOT NULL ,
        [nElmoUP] [smallint] NOT NULL ,
        [strElmoUserID] [char] (21) NULL ,
        [nElmoLoyaltyMonthly] [int] NULL ,
        [nElmoCheck] [int] NOT NULL ,
        [nKarusUP] [smallint] NOT NULL ,
        [strKarusUserID] [char] (21) NULL ,
        [nKarusLoyaltyMonthly] [int] NULL ,
        [nKarusCheck] [int] NOT NULL ,
        [nSalary] [int] NOT NULL ,
        [UpdateDate] [smalldatetime] NOT NULL
) ON [PRIMARY]
GO

2 回复

oyeono
2009-3-31 22:04:19
点击查看详情
谢谢分享。。好多哦。。辛苦啦!
28085279
2009-4-1 12:52:21
嗯 ,非常感谢,终于搞明白了
高级模式
游客