Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
ID, ADMIN_ID gibi iki değişkeni olan bir tablom olsun. 1-n şeklinde ağaç olarak bir hiyerarşi var. Ben bir kişinin id sini parametre alarak onun altında çalışanları ve çalışanların çalışanlar... tüm ağacı görmek istiyorum. Rekürsif bi yapı kullanmalıyım sanırım, nasıl yapabilrim
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
2. Olarakta resimdeki yapıya göre.
Bir kişinin PERS_Id sini parametre alıp o kişi için
ITEM_Name,ITEM_Rendered,ITEM_Disabled değerlerini bana listeleyen bir sorguya ihtiyacım var.
Bir kişinin birden fazla rolü bir rolün birden fazla fonksyonu olduğu için aynı ITEM'a farklı izinlerde sahip olabilir. Bu ITEM ler gruplamalıyım sanırım ama rendered bool değerleri or lanmalı ve disabled değerler and lenmeli. Bunu nasıl yapabilirim
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
Yazar |
|
orhan
istanbul
admin
Kayıt: 17.11.2005 |
|
sonucta stored procedure in ve out parametreleri alabilir. bir while dongusu içerisinde proceduru tekrar tekrar çalıştırıp in out parametrelerini kontrol edebilirsin.
N/A
|
|
Yazar |
|
orhan
istanbul
admin
Kayıt: 17.11.2005 |
|
script ve sample data verbakalım
N/A
|
|
Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
Henüz verileri oluşturmadım. Oluşturunca yazarım tekrar.
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
Yazar |
|
tatanga
Kayıt: 13.10.2006 |
|
eğer sql 2005 kullanacaksan bir sp'yi rekürsif olarak max. 32 kere çağırabilirsin.
Select @@NestLevel ile bulunduğun dallanmayı öğrenip 32 ise kaldığın yerden devam edebilecek farklı isimli bir sp çağırabilirsin.
bunun yerine sana şöyle bi yapı öneririm;
çalışan tablosunu id, parentid, relation şeklinde tanımla,
en tepede yer alacak kaydın relation alanını 1,
onun altında çalışan ilk kişinin relation alanı 1-1,
ikinci kişinin relation alanı 1-2, üçünü 1-3 .. şeklinde devam ettir.
1-1 relationlı çalışanın altında çalışan ilk elemanın relation alanı da 1-1-1, ikinci 1-1-2.. şeklinde devam ettir.
1-1 relation alanına sahip elemanın altında çalışanları bulmak için
select * from xx where relation like '1-1-%' komutunu vermen yeterli.
direkt ona bağlı olanlar için de parentid den sorgularsın.
|
|
Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
Şöyle bir yapı denedim ama çalıştıramadım Daha doğrusu istediğim sonucu alamadım. Burda 100 defadan fazla kendini çağırmıyor fonksyon. Benim tabloda binlerce çalışan olacak. Bu sayılarla oynama şansım varmı?
Bide oracle da Connect by prior die bişey varmış ms sql de niye yokki
tatanga yazdi
Böyle bir yapıyı son çare olarak kullanabilrim belki.
USE HR_Dbase;
GO
WITH HR_Employe (EMPL_Administrator, EMPL_Id)
AS
(
-- Anchor member definition
SELECT e.EMPL_Administrator, e.EMPL_Id
FROM HR_Employee AS e
UNION ALL
-- Recursive member definition
SELECT e.EMPL_Administrator, e.EMPL_Id
FROM HR_Employee AS e
INNER JOIN HR_Employee AS d
ON e.EMPL_Administrator = d.EMPL_Id
)
-- Statement that executes the CTE
SELECT *
FROM HR_Employe WHERE EMPL_Id = 832
GO
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
Yazar |
|
extreme
Kahramanmaras
admin
Kayıt: 24.10.2006 |
|
Böyle yaptım oldu
WITH n(EMPL_Id, EMPL_Adnisitrator) AS
(SELECT EMPL_Id, EMPL_Administrator
FROM HR_Employee
WHERE EMPL_Id = 832
UNION ALL
SELECT nplus1.EMPL_Id, nplus1.EMPL_Administrator
FROM HR_Employee as nplus1, n
WHERE n.EMPL_Id = nplus1.EMPL_Administrator)
SELECT * FROM n
The Man Who Loved Algorithm&Ubuntu.
www.burakamasyali.com
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | | | |