Generator Kayıt Silme ve sıralama

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Generator Kayıt Silme ve sıralama

Mesaj gönderen Query »

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 ...

Kod: Tümünü seç

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.

Kod: Tümünü seç

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 :?: Formda detaylı bir arama yaptım bulabildiğim en yakın soru bu
viewtopic.php?t=1388&highlight=generator+silme

burada da cevabımı bulamadım :cry: :cry:

İyi Çalışmalar
selm@n
Kıdemli Üye
Mesajlar: 442
Kayıt: 01 Oca 2004 11:52
Konum: Adapazarı
İletişim:

Mesaj gönderen selm@n »

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

Kod: Tümünü seç

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;
;)
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

@selman hocam teşekkür ederim. Bu şekilde sıralama tamam.

Fakat normal şartlarda PK bir alanı zaten sıralama yapması gerekmiyormu?
guduknecmi
Üye
Mesajlar: 99
Kayıt: 08 Nis 2004 02:18
İletişim:

Mesaj gönderen guduknecmi »

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?
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

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...

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

Tabiki 7 diye yapıyor. Ama 7'yi sıralamada 2nin yerine koyuyor.
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

benzer olay benimde basıma gelmisti
ibdataset sql cumlesine sıralamak istediginiz alanı eklein
bu sekilde daha kullanıslı oluyor.
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

Evet bende o şekilde düzelttim. Ama olmaması gerekiyor. Teşekkürler.
Kullanıcı avatarı
Kuri_YJ
Moderator
Mesajlar: 2248
Kayıt: 06 Ağu 2003 12:07
Konum: İstanbul
İletişim:

Mesaj gönderen Kuri_YJ »

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
Kuri Yalnız Jedi
Harbi Özgürlük İçin Pisi http://www.pisilinux.org/
Kullanıcı avatarı
Query
Üye
Mesajlar: 363
Kayıt: 29 Ara 2003 05:13

Mesaj gönderen Query »

Kuri_TLJ yazdı: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. :lol:
Cevapla