Oyuna Girmeyen Karakterleri Silme

N Çevrimdışı

NERTHUS59

Kayıtlı Üye
14 Mart 2016
33
0
6
37
1. Uygulayacağımız yöntem



Kod:
delete userdata where updatetime < '2012-01-01 01:00:00' and  loyalty < 10000



NPsi 10k dan az, 2012 yılının 1. ayının 1.günü saat 01:00 den önce giriş yapmış ve bir daha oyuna girmemiş charlari silmek için kullanılan kod dur.

Tarihi isteğinize göre değiştirebilirsiniz. Yıl/ay/gün şeklinde.(kırmızı ile yazılmış olan)

birde.



ALıntı kod var ( userdatadan silinen charlari account_chardan da siliyor ). Önce yukarda verdiğim Kodu çalıştırınız, ardından aşağıdaki kodu calistiriniz.



2.Uygulayacağımız yöntem



Kod:
CREATE PROCEDURE [temizlik1]

--@AccountID    varchar(21)

AS

SET NOCOUNT ON

DECLARE @AccountID varchar(21)

DECLARE @m1 char(21), @m2 char(21), @m3 char(21), @s1 tinyint, @s2  tinyint, @s3 tinyint, @c1 char(21), @c2 char(21), @c3 char(21), @r1  tinyint, @r2 tinyint, @r3 tinyint,@u char(21)

SET @r1=0

SET @r2=0

SET @r3=0

SET @s1=0

SET @s2=0

SET @s3=0

SET @c1=null

SET @c2=null

SET @c3=null

DECLARE job1 CURSOR FOR

Select straccountid from Account_char

OPEN job1

FETCH NEXT FROM job1

INTO @AccountID

WHILE @@fetch_status = 0

BEGIN

SELECT @c1 = strcharid1, @c2 = strcharid2, @c3 = strcharid3 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID

SELECT @r1=count(struserid) FROM [dbo].[USERDATA] WHERE strUserId=@c1

IF @r1=0

UPDATE ACCOUNT_CHAR set strcharid1=null where strAccountID = @AccountID

SELECT @r2=count(struserid) FROM [dbo].[USERDATA] WHERE strUserId=@c2

IF @r2=0

UPDATE ACCOUNT_CHAR set strcharid2=null where strAccountID = @AccountID

SELECT @r3=count(struserid) FROM [dbo].[USERDATA] WHERE strUserId=@c3

IF @r3=0

UPDATE ACCOUNT_CHAR set strcharid3=null where strAccountID = @AccountID

SELECT @m1 = strcharid1, @m2 = strcharid2, @m3 = strcharid3 FROM ACCOUNT_CHAR WHERE strAccountID = @AccountID

select @s1=count(struserid) from [dbo].[USERDATA] where strUserId=@m1

select @s2=count(struserid) from [dbo].[USERDATA] where strUserId=@m2

select @s3=count(struserid) from [dbo].[USERDATA] where strUserId=@m3

update account_char set bcharnum=@s1+@s2+@s3 where strAccountID=@AccountID

    FETCH NEXT FROM job1

    INTO @AccountID

END

CLOSE job1

DEALLOCATE job1

SET NOCOUNT OFF

GO



3.Uygulayacağımız yöntem



Kod:
delete account_char where strcharid1 is null and strcharid2 is null and strcharid3 is null

delete tb_user where straccountid not in (select straccountid from account_char)

delete warehouse where straccountid not in (select straccountid from  tb_user)
 
Üst