verileri sıralama işlemi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

verileri sıralama işlemi

Mesaj gönderen bobasturk »

Merhaba,

Derdimi başlıkta anlatamadım. Hep çok uzun cümleler kurduğum için bu şekil kısa yazma gereksinimi duydum, zira bu şekilde arama yaptıran olabilir düşüncesi hasıl oldu.

fb ve delphi 7 kullanıyorum. Order by ve group by olarak sıralama yaptırabiliyorum. fakat şimdiki düşüncem farklı bir sıralama.

sicil, adsoyad ve rütbe olarak alanlarım var. veri görüntüleme olarak ve pk olarak sicil integer alanını kullanıyorum. raporlama aldığımda sicil sırası sıralatıp rapor alabiliyorum. fakat ben bu sıralamanın gayrısında rütbe olarak üstte olan kişilerin sicilen düşükte olsa ilk sırada olmasını istiyorum yani sicili büyük x memur (sicili büyük demekle sıfıra yakın olanını kastediyorum) sicili küçük amirin altında yer alsın. bilindiği gibi normalde integer sicili 1,2,3..... diye sıralı veya tersten sıralı olarak görüntüleyebiliyor ve bu şekilde raporlama alabiliyoruz.

kendimi açıklamakta zorlanıyorum, şöyle bir örnek vereyim
1 memur
2 memur
3 memur
4 amir
5 memur
6 memur
7 müdür şeklinde sicil sırasında listemiz var. müdür en rütbeli kişi, amir ondan sonra gelen ve memurlar ise en altta bunları müdür ilk sırada amir ikinci sırada memurları ise sicil sırasında en alt sırada sıralamasını istiyorum. tabi birden fazla müdür varsa bunlarıda kendi arasında sicil sırasına soksun, amir varsa da bunlarıda kendi arasında sıralamaya tabi tutsun sonra memurları kendi sicil sırasında sıralasın.

karışık bir yapı, genelde çalışmalarımda tarih, sayı ve ad soyad alanlarını order by komutunda (,) ler ile ayırarak bir birleri arasında sıralatıyorum. fakat burada sicil, rütbe şeklinde bağlatırsan harf işleminde takılacak ve amirin a sı müdürün m sinden önce geldiğinden düşük rütbeli üste çıkacak.

bilmiyorum anlatabildim mi. eğer anlatabildim ise bu konuda bana yardımcı olursanız sevinirim. nereden tutacağımı neyi takip edeceğimi bilmiyorum.

teşekkür ve saygı ile
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

iyi akşamlar..
hocam soruyla ilgili değişik cevaplar gelecektir ama aklıma ilk gelen;
tabloya rutbesirano diye bir field ekleseniz yeni kayıt yaparken eğer müdür ekliyorsa rutbesirano=1,amir ekliyorsa rutbesirano=2 memur ise rutbesirano=3 olsun...

Kod: Tümünü seç

select * from personel order by rutbesirano,sicilno
şeklinde sorgularsanız önce rütbeleri sıralar sonrada rütbesi aynı olanlarda sicilno ya göre sıralar..bundan önceki kayıtlar içinde bir patchle tabloyu tarayıp rütbeye göre rutbesirano alanlarını yazarsınız.
nacizane fikrim bu..
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

@Serkan ustam, yani bana pes doğrusu. Burada sıcaklar 45 derece ve arabaların bile boyalarını yakıyor güneş. benim halimi düşün klima yok rüzgar yok. yandım anam. bu kadar basit bir çözüm aklıma gelmedi. çok teşekkür ederim. sanırım tabloyu bozmama açısından takıldım kaldım ve aklıma gelmedi. henüz proje yapım aşamasında yani veri yok.

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
serkan
Üye
Mesajlar: 666
Kayıt: 10 Tem 2003 12:08
Konum: bursa

Mesaj gönderen serkan »

rica ederim bobasturk hocam...bazen satranç tahtasına oyuncu değilde izleyici gözüyle bakmak farklı oluyor.sizinkide öyle bişey olmuş..
iyi çalışmalar..
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hocalar dediklerinize ek olarak rutbe_sira_no yada unvan_id gibi integer bir alanı
  • 10 Müdür
    20 Amir
    30 Memur
    40 Hizmetli
    vs..
şeklinde unvad_id ve unvan_adi diye iki alandan oluşan bir yardımcı tablo ile join lemek. Unvan_id leri onar onar verdim ki araya yarın başka bir unvan eklendiğinde sıralamanın değişmemesi için.

Bundan sonrası da

Kod: Tümünü seç

select u.unvan_adi, p.sicil, p.adsoyad from personel p
left join unvanlar u on (u.unvan_id = p.unvan_id)
order by p.unvan_id, p.sicil
Tekrarlayan bu tür alanlarda her zaman yardımcı tablo kullanmak avantajlıdır. Hatta sadece Erkek/Kadın bilgisi alan bir alan için de yardımcı tablo kullanmak gerekir diye düşünüyorum :wink: Bu alan foreign key ile ana tabloya bağlanarak tanımlanan bilgilerden farklı bir bilginin de girilmesini engeller. Bu da verilerin tutarlılığını sağlar :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

@rsimsek ustam dediğinin yarısını yaptım sayılır. yeni rutbe_kodu tablosu oluşturdum. ve araya rütbe girmeyeceği için (tabi buçukluk verirlerse başka) 1,2,3 diyerek rütbeleri sıraladım, veri giriş tabloma dblookup ile bunları çektim ve rütbe kodu gireceğim alana rutbekodu tablosunun kod kısmına atadım. şimdilik kullanıcı sadece rütbesini belirliyor, kodu sistem kendi yazıyor kolaylık açısından ve istediğim sıralamayı yapıyor.

soruyu sorarken böyle bir cevabın da geleceğini tahmin etmiş ve bekliyordum. bu cevap üzerine de düşünerek kafa yoracağım.

teşekkür ve saygılarımla
kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Hocam birer birer yapma 10,20,30,.. diye devam et :idea:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
EeCOMP
Üye
Mesajlar: 119
Kayıt: 13 Tem 2003 10:38
Konum: istanbul
İletişim:

Mesaj gönderen EeCOMP »

hocam ben bu işlerde yeniyim neden 1 2 3 gibi değilde 10 20 30 şeklinde yapmalıyız tam olarak anlayamadım.
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Yarın ne olacağı belli olmaz esneme payı bırakmak lazım :wink:
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
EeCOMP
Üye
Mesajlar: 119
Kayıt: 13 Tem 2003 10:38
Konum: istanbul
İletişim:

Mesaj gönderen EeCOMP »

hımm anladım müdür ile şef arasında bir rütbe çıkarsa araya kaynak yapmak açısından güzel olur evet bu tarz pratik bilgileri edinmek iyi oluyor sağolun hocam
Kainat dahi bir programdır ve şüphesiz onun bir programcısı vardır...
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

@Recep ustam sen dersin ben yapmazmıyım, daha o gün 10,20,30 şeklinde düzelttim ve o şekil kullanıyorum. Tecrübeden istifade etmek gerek.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

:)
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Cevapla