1. Reklam


    1. joysro
      ledas
      jungler
      keasro
      zeus
      karantina

SQL QUERY SORGUSU


  1. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Bi türlü yapamadım, yanlış bişey yapmakta istemiyorum ama yapmak istediğim şu;
    select * from 'tablo adı' where 'tablo sütunu' like 'item adı yada Id'si vb.' bu şekilde itemi bulabiliyoruz.

    Benim yapmak istediğim;
    _Char tablosunda örneğin Ahmet adında bi çar olsun.
    Bunu silmek istediğimiz zaman, avatar tablosu, skill tablosu, inventory tablosu, mastery tablosu vb. tablolardanda silmemizi istiyor.
    Bende verdiği uyarılara göre tek tek o tablodaki ilgili ID'yi siliyorum.
    En son hepsi bitincede _Char tablosundan çarı silebiliyorum.

    Şimdi istediğim şu, buna nasıl bir Query yazmalıyım ki okuttuğum zaman Ahmet isimli çarı silsin.
    Yada Ahmet isimli çarın ID sini ilgili bütün tablolardan silsin ve en sonunda Ahmet isimli çarı _Char tablosundan temizlesin.

    SQL'de kod yazma konusunda fazla bilgim yok, yaklaşık 3-4 aydır uğraşıyorum.
    Bi çok şeyi yapabiliyorum ama fazla bilgim olmadığı için malum soluğu burda alıyorum.

    Dipnot: @Collapse hızır gibi yetişir şimdi. pray:
     
  2. Collapse

    Collapse   asistan rank8

    Kayıt:
    22 Aralık 2010
    Mesajlar:
    7.289
    Beğenilen Mesajlar:
    166
    Ödül Puanları:
    73
    Delete from komutu kullanarak silebilirsin. Çıkan uyarılarda yazan tüm tabloları içeren bir kod yazabilirsin.

    Ya da belki hazırı vardır? Zaten oyunda karakter silme fonksiyonu var. Bunun prosedürünü bulup kullanabilirsin.
     
  3. sarkolata

    sarkolata zaa xD olduser rank8

    Kayıt:
    15 Temmuz 2009
    Mesajlar:
    8.601
    Beğenilen Mesajlar:
    69
    Ödül Puanları:
    58
    Meslek:
    İt Kopuk
    Şehir:
    Istanbul City
    Kod:
    USE [SRO_VT_SHARD]
    go
    declare @CharID int , @CharName varchar(16)
    set @CharName = 'CharName'
    set @CharID = ( select CharID from _Char where CharName16 = @CharName )
    DELETE FROM _InventoryForAvatar WHERE CharID = @CharID
    DELETE FROM _Inventory WHERE CharID = @CharID
    DELETE FROM _CharSkillMastery WHERE CharID = @CharID
    DELETE FROM _CharSkill WHERE CharID = @CharID
    DELETE FROM _CharTrijob WHERE CharID = @CharID
    DELETE FROM _User WHERE CharID = @CharID
    DELETE FROM _StaticAvatar WHERE CharID = @CharID
    DELETE FROM _TimedJob WHERE CharID = @CharID
    DELETE FROM _Char WHERE CharID = @CharID
    
    'CharName' yazan kısmı değiştirmek istediğinle değiştirip executelayacaksın.
     
    BurakSerit bunu beğendi.
  4. Tweety

    Tweety Old School olduser rank8

    Kayıt:
    24 Mayıs 2007
    Mesajlar:
    3.716
    Beğenilen Mesajlar:
    19
    Ödül Puanları:
    38
    Meslek:
    Chief Operating Officer
    Şehir:
    İzmir, Bornova
    Bu şekilde silinmesini tavsiye etmiyorum, prosedür üzerinden silmek en güvenlisi :)
     
  5. sarkolata

    sarkolata zaa xD olduser rank8

    Kayıt:
    15 Temmuz 2009
    Mesajlar:
    8.601
    Beğenilen Mesajlar:
    69
    Ödül Puanları:
    58
    Meslek:
    İt Kopuk
    Şehir:
    Istanbul City
    Bir kaç kontrol yapıyor ancak o da çok gerekli değil açıkçası, gs'nin anlayacağı error mesajları veriyor.
    Öylesini de yazayım.
    Kod:
    USE [SRO_VT_SHARD]
    go
    declare @CharID int , @CharName varchar(16)
    set @CharName = 'CharName'
    set @CharID = ( select CharID from _Char where CharName16 = @CharName )
    exec _DeleteCharPermanently @CharID
    
     
  6. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Bunu deneyeceğim, Db'de sorun yaratmaz sanırım.
    Diğer türlü zor oluyo, tablo tablo geziyorum.
    Birde elimde bir program var onun üzerinden Shard'ı temizleyince Fortress, Guild tablolarını vb. de siliyor.
    Yani oyunda ne kadar çar, guild vb. varsa hepsini siliyor. Bu query sorunsuzca çalışırsa arşive alacağım :muck:

    Nasıl yani? Nasıl yapmamız gerekiyor? Biraz bahsedersen sevinicem :detective:

    Bide buraya bakmanızı rica ediyorum;
    TÜM VERGİLERİ TEK KALEYE BAĞLAMAK?
     
  7. Tweety

    Tweety Old School olduser rank8

    Kayıt:
    24 Mayıs 2007
    Mesajlar:
    3.716
    Beğenilen Mesajlar:
    19
    Ödül Puanları:
    38
    Meslek:
    Chief Operating Officer
    Şehir:
    İzmir, Bornova
    Sarkolata Procedure kullanım kodunu vermiş zaten :)
     
    BurakSerit bunu beğendi.
  8. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Kodu kullandım lakin _Char tablosundan silinmiyor.
    Query okutup, çar tablosundan elle silmek isteyince 2 adet tablo hatası veriyor.
    O tablolardan elle silip Query okutunca _Char tablosundanda siliniyor.
    CharCos ve InvChar tablosu mu ne.
     
  9. Tweety

    Tweety Old School olduser rank8

    Kayıt:
    24 Mayıs 2007
    Mesajlar:
    3.716
    Beğenilen Mesajlar:
    19
    Ödül Puanları:
    38
    Meslek:
    Chief Operating Officer
    Şehir:
    İzmir, Bornova
    Procedurun amacı StrUserID den Char'ın bağını kesmek, genel olarak online oyunlarda veri bütünlüğünün korunması gerekir, bazı ihtimallerle duplicate CharID oluşursa daha büyük sorunlar oluşuyor (Bir kere başıma gelmişti), bu sebepten ötürü aktif bir oyunda karakteri tablolardan temizlemektense, procedure ile karakteri işlevsiz hale getirmek daha mantıklı olacaktır.
     
  10. BurakSerit

    BurakSerit www.burakserit.com rank8

    Kayıt:
    22 Ağustos 2010
    Mesajlar:
    356
    Beğenilen Mesajlar:
    38
    Ödül Puanları:
    38
    Meslek:
    Producer&DJ
    Yani şunu diyorsun, Prosedür kullanırsam çar'ın tüm özellikleri silinir ve çar bir daha kullanılmaz. Oyun içerisindende silinir ama sıralamada gözükür?