Generator Kayıt Silme ve sıralama
Query05.01.2005 - 16:03:13
Arkadaşlar Slm;

Firebirde yeni başladım sayenizde öğrenmeye çalışıyorum.

Firebird de oluşturduğum bir datam var. Bir Generator oluşturdum ve normal olarak autoinc bir alan ve sağlıklı çalışıyor.

Sorunuma gelince ...

SIRA MUS_ADI
1 ALİ
2 VELİ
3 AYŞE
4 FATMA
5 MEHMET
6 MUSTAFA
.
.
.
.


diye girdiğim kayıtlar var SIRA autoinc alan VE PRİMARY KEY

aradan herhangi kayıtları sildiğim zaman ve ardından yeni kayıt eklediğimde(hemen olması şart değil silme işleminden sonra programa girip çıkılabiliyor) kayıt şöyle oluşuyor.

SIRA MUS_ADI
1 ALİ
2 VELİ
37 AHMET
38 KAAN
5 MEHMET
39 ATİLLA
.
.
.
35 KEMAL
36 RAHMİ


şeklinde oluyor. Yani üretilen no da sorun yok ama sıralamayı silinen alanlara göre yapıyor.

Bunu programda iki sakıncası oluyor

1. Doğal olarak sıralamayı doğru yapmıyor.

2. Normal sira alanı dışında benim belirlediğim bir MUS_NO alnı var ve bunu son kaydın MUS_NO suna göre arttırıyorum. Yine MUS_NO lar kendi alanlarına göre gruplandığı için çeşitli filitreler uyguluyorum.

Sorunu son gen_id alarak çözümlemek istediğimde işler oldukça karışıyor çünkü uyguladığım çeşitli filitreler var.

Burada aslında sadece doğru sıralaması yeterli olacaktır.

Sıralamayı da ORDER BY kullanarak yapmaya çalıştığımdada WHERE kullanamıyorum hata veriyor.

Napabilirim. Ne yapmalıyım Question Formda detaylı bir arama yaptım bulabildiğim en yakın soru bu
http://www.delphiturkiye.com/forum/viewtopic.php?t=1388&highlight=generator+silme

burada da cevabımı bulamadım Crying or Very sad Crying or Very sad

İyi Çalışmalar
 
selm@n05.01.2005 - 16:31:38
Ve aleykum selam;
Sıralamayı da ORDER BY kullanarak yapmaya çalıştığımdada WHERE kullanamıyorum hata veriyor.



select * from personel
where personel.sicil between 1 and 20
order by personel.sicil

Hocam bu şekilde yazarsanız çaılşması lazım..
Kolay gelsin;
 
Query05.01.2005 - 16:44:02
@selman hocam teşekkür ederim. Bu şekilde sıralama tamam.

Fakat normal şartlarda PK bir alanı zaten sıralama yapması gerekmiyormu?
 
guduknecmi07.01.2005 - 22:30:05
autoinc alanlar sıralamayı ilk boş alanı doldurarak mı yapıyor?Mesela 1,3,6 kayıtlar varsa yeni kayıt eklendiğinde kaç olacak? 2 mi 7 mi?
 
husonet08.01.2005 - 00:14:12
7 olacaktır çünkü generator yapılan son kaydın numarasanı alır ona göre işem yapar.

1
3
5
7

olduğunu varsayalım tabloda genaretor yeni eklenecek kayıta 8 i verecektir 7 yi silseniz bile 8 gelecektir.

Kolay Gelsin...
 
Query12.01.2005 - 10:00:49
Tabiki 7 diye yapıyor. Ama 7'yi sıralamada 2nin yerine koyuyor.
 
gkimirti12.01.2005 - 12:26:24
benzer olay benimde basıma gelmisti
ibdataset sql cumlesine sıralamak istediginiz alanı eklein
bu sekilde daha kullanıslı oluyor.
 
Query12.01.2005 - 18:38:03
Evet bende o şekilde düzelttim. Ama olmaması gerekiyor. Teşekkürler.
 
Kuri_YJ12.01.2005 - 18:47:33
Selamlar,

Server bir Select uygularken hangi sırada getireceğini Order By'a bakarak karar verir, eğer herhangi bir Order By belirtilmediyse Where koşuluna bakar. Eğer Where koşulu verildiyse bu Where koşuluna uygun index ne ise sorgulamayı bu indexe göre yapar ve kayıtları da bu sırada getirir. Eğer hiç biri uymuyor ise ya primary key'i kullanır yada natural order denilen kayıtların disk üzerindeki sıralanmalarına göre getirir. Eğer primary key Server tarafından Clustered indexlenmiş ise natural order = primary key olacaktır.

Kolay Gelsin
 
Query15.01.2005 - 09:46:08
Selamlar,

Server bir Select uygularken hangi sırada getireceğini Order By'a bakarak karar verir, eğer herhangi bir Order By belirtilmediyse Where koşuluna bakar. Eğer Where koşulu verildiyse bu Where koşuluna uygun index ne ise sorgulamayı bu indexe göre yapar ve kayıtları da bu sırada getirir. Eğer hiç biri uymuyor ise ya primary key'i kullanır yada natural order denilen kayıtların disk üzerindeki sıralanmalarına göre getirir. Eğer primary key Server tarafından Clustered indexlenmiş ise natural order = primary key olacaktır.

Kolay Gelsin


Slm;

Açıklamanız için teşekkürler. Bu olayı açıklıyor. Paradox tan kalma alışkanlıkları unutmak gerekiyor. Artık FIREBIRD var. Laughing
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com