Konuyu görüntüle
IUCODERS FORUM > Programlama > Veritabanları > Değişkenler
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2008-13:38 #50801
PARAMETERS Sira Short=1;
SELECT [Sira] AS VeriSirasi, Veri
FROM Tablo
where VeriID=74
ORDER BY ID;

Bir tablodan çektiğim verilere 1 den başlayıp numaralandırmak istiyorum. Bu sorguda Sira değişkenini 1 den başlatıp nasıl arttırabilirimconfused. Burada VeriID yabancı anahtar (yada adı herneyse) sadece başka bir kullanıcıya ait verileri çekiyorum.








The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
crossfire


avatar
izmir
Kayıt: 20.07.2008
25.08.2008-15:19 #50803
Numaralandırma işini neden veritabanı motoruna yaptırmak istiyorsun?

http://support.microsoft.com/kb/186133

Linkteki örnekleri incele istersen. Ama eğer gerçekten zorunluluğun yoksa bu işi uygulama programına yaptırman çok daha uygun.





robotum, robotsun, robot
Yazar
aliprinter


avatar
İstanbul
Kayıt: 12.02.2006
25.08.2008-15:55 #50805
Şurada yazılanları da bir incele istersen. coffee
http://www.iucoders.com/frm_show_topic.jsp?tid=3775





Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2008-17:12 #50806
aliprinter yazdi
 
Şurada yazılanları da bir incele istersen. coffee
http://www.iucoders.com/frm_show_topic.jsp?tid=3775


Teşekkürler problemi hallettim.

crossfire yazdi
 
Numaralandırma işini neden veritabanı motoruna yaptırmak istiyorsun?

http://support.microsoft.com/kb/186133

Linkteki örnekleri incele istersen. Ama eğer gerçekten zorunluluğun yoksa bu işi uygulama programına yaptırman çok daha uygun.


Fazladan onbinlerce int tutmak olur bu benim için. Otomatik sayı verdirmek daha iyi bence.






The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
crossfire


avatar
izmir
Kayıt: 20.07.2008
25.08.2008-17:41 #50811
Fazladan "onbinlerce" int tutmak mı? Nasıl bir mimari çok merak ettim. thinking





robotum, robotsun, robot
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2008-17:47 #50814
crossfire yazdi
 
Fazladan "onbinlerce" int tutmak mı? Nasıl bir mimari çok merak ettim. thinking


O tabloda herbir kayıt bir satranç hamlesini tutuyor "d2d4" gibi. Her satranç oyunu 100 hamle olsa. şuanda bile 100 oyun var kayıtlı 10000 hamle oluyor. zaten. Hamlelerin ID si, Masa Numarası tutuluyo. bende oyun açıldığında sıralı yazdırmak isyiyorum sayfaya. ilk hamleden sonra hamleye. o yüzden sıralarını yazdırmak istedim ama ID değişkeni diğer oyunlarla ortak oluğu için sıra vermiyor. o yüzden 1 den artan bi değişken lazımdı.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
crossfire


avatar
izmir
Kayıt: 20.07.2008
25.08.2008-17:57 #50815
Veritabanından çektiğin kayıtları ekrana bir loop içinde yazdırmıyor musun? Loop başlangıcında bir değişkene 1 değerini atarsın, her iterasyonda da bu değişkeni sıra numarası diye yazdırıp değerini 1 arttırırsın. Burada on binlerce değil sadece 1 tane int söz konusu olur. Diğer türlü (sql ile) yaptığında bellekteki data kümesi her bir kayıt için fazladan 1 tane int tutmuş olacak.





robotum, robotsun, robot
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2008-18:01 #50816
crossfire yazdi
 
Veritabanından çektiğin kayıtları ekrana bir loop içinde yazdırmıyor musun? Loop başlangıcında bir değişkene 1 değerini atarsın, her iterasyonda da bu değişkeni sıra numarası diye yazdırıp değerini 1 arttırırsın. Burada on binlerce değil sadece 1 tane int söz konusu olur. Diğer türlü (sql ile) yaptığında bellekteki data kümesi her bir kayıt için fazladan 1 tane int tutmuş olacak.


aliprinter yazdi
 
ROW_NUMBER() fonksiyonu SQL Server'da var, ancak anladığım kadarıyla MSAccess'te geçerli olmayan bir fonksiyon.
İstediğin işlemi başka türlü doğal yollarla şöyle gerçekleştirebilirsin sanırım:

SELECT InPersonId, StName, (SELECT COUNT(*) FROM TbPerson WHERE TbPerson.InPersonId <= e.InPersonId AND InPersonId > 0) AS ROWNUM
FROM TbPerson e WHERE InPersonId > 0


Bu mantıkla direk bir gridview'e çekiyorum.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
crossfire


avatar
izmir
Kayıt: 20.07.2008
25.08.2008-18:15 #50817
extreme yazdi
 
Bu mantıkla direk bir gridview'e çekiyorum.

Şunu baştan desenebiggrin Ben data akışını kendi yazdığın arayüz ile sağladığını varsayarak yorum yaptım.





robotum, robotsun, robot
Yazar
orhan


avatar
istanbul
admin
Kayıt: 17.11.2005
25.08.2008-21:15 #50819
extreme yazdi
 

SELECT InPersonId, StName, (SELECT COUNT(*) FROM TbPerson WHERE TbPerson.InPersonId <= e.InPersonId AND InPersonId > 0) AS ROWNUM
FROM TbPerson e WHERE InPersonId > 0

veritabanında bir key tutmak yerine her satır için subquery mi yapacaksın ? :) çok kötü bir tasarım bu.





N/A
Yazar
extreme


avatar
Kahramanmaras
admin
Kayıt: 24.10.2006
25.08.2008-21:33 #50820
orhan yazdi
 
extreme yazdi
 

SELECT InPersonId, StName, (SELECT COUNT(*) FROM TbPerson WHERE TbPerson.InPersonId <= e.InPersonId AND InPersonId > 0) AS ROWNUM
FROM TbPerson e WHERE InPersonId > 0

veritabanında bir key tutmak yerine her satır için subquery mi yapacaksın ? :) çok kötü bir tasarım bu.


Göründüğü kadar kötü değilbiggrin. Bi tabloda oyunda yapılan hamleleri tutuyorum. id ler var ama id ler bütün masalar için ortak. sadece bir masanın hamlelerini görüntülüyorum, Veriler sıralı bana sadece numaralandırmak kalıyor. Boşyere bir değişken daha kullanmamak için böyle yaptım.





The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com





Yazar
clairvoyant


avatar
Antalya
Kayıt: 05.05.2006
25.08.2008-23:19 #50821
Bence tabloda yeni bir alan oluştur "Sira" diye. Kullanıcının ilk hamlesi sonucunda ilk eklenecek satır için "Sira" değeri 1 olur. Her hamle sonunda o kullanıcı için yeni eklenecek kayıtta "Sira" değeri öncekilerin en büyüğünden 1 fazla ya da önceki kayıt sayısından 1 fazla olur (ikisi de aynı sayı). 2 sorguyla (sistem insert işleminde hedef tablodan veri çekmeye izin veriyorsa tek 1 iç içe SELECT ile) ya da eğer SP kullanıyorsan tek bir SP içinde halledebilirsin. Bu işlemi belirli bir kullanıcı için yapacağından numaralandırmada sorun olmaz (eğer aynı kullanıcı kimliği ile aynı anda çoklu oturum söz konusu değil ise). En sonunda listelerken istersen "ORDER BY ID", istersen "ORDER BY Sira" dersin ve sonuçları yazdırırsın. Bu durumda her kayıt için disk üzerinde 4 byte fazladan yer tutmuş olursun ama sırf numaralandırmak için karmaşık SQL cümleleri kullanmak zorunda kalmadığın gibi listeleme işi daha performanslı olur.





Let`s make this world a better place to live !

Del.icio.us
Digg
Facebook
Furl
Google
Blink
Simpy
Spurl
Y! MyWeb