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ı]
Kategorileri hiyerarşik listeleme
ancak epey subquery'ler ve union'lar ile yapilabilecegini dusunup biraz calistiktan sonra soyle bir kod cikti.... 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....
Kolay gelsin......
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
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
* http://www.fahrettin.org Manzara Fotoğraflarım... 
* http://delphiturkiye.gunduz.info Seminerler...
* http://www.hakmar.com.tr Kalite bir haktır...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...

firebird icin
yalnız bu sıralama kategori id lere gore yapıyor.
kat ismine gore nasıl olur acaba?
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
kat ismine gore nasıl olur acaba?
ÜŞENME,ERTELEME,VAZGEÇME
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...

* http://delphiturkiye.gunduz.info Seminerler...

* http://www.hakmar.com.tr Kalite bir haktır...
