Kategorileri hiyerarşik listeleme

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
onaydin

Kategorileri hiyerarşik listeleme

Mesaj gönderen onaydin »

KAT_NO, AD, KAT_UST_NO
------- ---- ---------------
1 [Coğrafya] null
2 [Tarih] null
3 [İstanbul] 1
4 [Osmanlı] 2
5 [Ankara] 1
6 [Avrupa] 2

şeklindeki tablodan
aşağıdaki liste nasıl elde edelir?
(yeni bir alan oluşturmadan)

1 [Coğrafya]
5 [Ankara]
3 [İstanbul]
2 [Tarih]
6 [Avrupa]
4 [Osmanlı]
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

ancak epey subquery'ler ve union'lar ile yapilabilecegini dusunup biraz calistiktan sonra soyle bir kod cikti....

Kod: Tümünü seç

select PERSONEL_NO, AD, S=PERSONEL_NO*10000
from PER
where UST_PERSONEL_NO is null
union all
select PERSONEL_NO, AD,  S=UST_PERSONEL_NO*10000+PERSONEL_NO
from PER
where UST_PERSONEL_NO in (select PERSONEL_NO from PER
where UST_PERSONEL_NO is null)
order by 3
Burada sıralama amaclı kullanılan S isimli alanda carpilan 10000 rakamının olası kullanılmıs butun PERSONEL_NO lardan veya KATEGORI_NO lardan daha buyuk bir sayi olmasi gerekiyor... Bir acigi var midir bilmiyorum ama bendeki benzer veri yapısında duzgun calisti...
Akabinde bu cümlenin biraz daha sadeleşebileceğini düşündüm ve bu şekle getirdim....

Kod: Tümünü seç

select AD, SIRA=isnull(UST_PERSONEL_NO,PERSONEL_NO)*100000+if UST_PERSONEL_NO is not null then PERSONEL_NO else 0 endif
from PER
order by SIRA
Kolay gelsin......
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

firebird icin

Kod: Tümünü seç

select k.ad,
(
case
  when k.kat_ust_id is not null then
    k.kat_ust_id*1000+k.id
  else
    k.id*1000
end
)
from kat k
order by 2
yalnız bu sıralama kategori id lere gore yapıyor.
kat ismine gore nasıl olur acaba?
ÜŞENME,ERTELEME,VAZGEÇME
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

onu ben de düsündüm ama... ilk etapta aklıma bir sey gelmedi... sıralama amaclı ilave sanal sutunlar ile belki halledilebilir....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
onaydin

Mesaj gönderen onaydin »

Teşekkürler
Cevapla