Arama butonu
Bu konudaki kullanıcılar: 1 misafir
8
Cevap
1652
Tıklama
0
Öne Çıkarma
Sql Fırtınası
M
18 yıl (300 mesaj)
Teğmen
Konu Sahibi

merhaba arkadaşlar. Bu forumda sql konusunda çok mesaj yazdım ama şimdi kendim bir konuda yardıma ihtiyacım var.
Şöyle Bir Yapım Var.

id-----ust_id-----baslik
1------0----------Ana grup
22-----1----------ana gruba bağlı malzemeler
53-----1----------ana gruba bağlı diğer mallar
4------0----------grup1
15-----4----------grup 1 e bağlı mallar
6------1----------ana grup a bağlı başka mallar
17-----4----------grup 1 e bağlı başka mallar

.....
id unique ve primary key
her ust_id bir id'ye bağlı.
benim yazmak istediğim sql id ve buna bağlı ust_id leri sırayla vermeli:

örneğin:
ana group
ana gruba bağlı malzemeler
ana gruba bağlı diğer mallar
ana grup a bağlı başka mallar
grup1
grup 1 e bağlı mallar
grup 1 e bağlı başka mallar

ilgilenen herkese şimdiden teşekkürler.

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



İ
18 yıl (1289 mesaj)
Binbaşı

Merhaba, Doğru anladıysam ;

select * from kategori ORDER BY id , ust_id.

gibi bir sorgu yeterli olur gibi geldi bana


Bu mesaja 1 cevap geldi.
M
18 yıl (300 mesaj)
Teğmen
Konu Sahibi

quote:

Orjinalden alıntı: Aspci79

Merhaba, Doğru anladıysam ;

select * from kategori ORDER BY id , ust_id.

gibi bir sorgu yeterli olur gibi geldi bana


ilginiz için teşekkürler.
Bu kadar kolay olsaydı bu konuyu açmazdım aslında.
yazdığınız şekilde sql önce ana groupları, ana gruplarda sonra da alt grupları sıralıyor.
halbuki ben önce ana grup sonrada buna bağlı alt grupları sıralamak istiyorum.

yani
ana grup1
altgrup1
altgrup2
anagrup2
baba grup 2
baba grup1
baba grup2
....

şeklinde sıralamak istiyorum.


Bu mesaja 1 cevap geldi.
İ
18 yıl (1289 mesaj)
Binbaşı

quote:

Orjinalden alıntı: mc92001


quote:

Orjinalden alıntı: Aspci79

Merhaba, Doğru anladıysam ;

select * from kategori ORDER BY id , ust_id.

gibi bir sorgu yeterli olur gibi geldi bana


ilginiz için teşekkürler.
Bu kadar kolay olsaydı bu konuyu açmazdım aslında.
yazdığınız şekilde sql önce ana groupları, ana gruplarda sonra da alt grupları sıralıyor.
halbuki ben önce ana grup sonrada buna bağlı alt grupları sıralamak istiyorum.

yani
ana grup1
altgrup1
altgrup2
anagrup2
baba grup 2
baba grup1
baba grup2
....

şeklinde sıralamak istiyorum.






Merhaba

Karmaşık gibi görünen sorunların cevapları genelde basittir sözünden yola çıkarak size basit görünen bir cevap yazdım. Yapmak istediğiniz Ana İd değeri altında alt idleri listelemekse TSQL de bu kod işinizi görür sanırım.

SELECT id, ust_id, ad
FROM table1
GROUP BY ust_id, id, ad


Ben yukarıda gösterdiğiniz şekilde test ettim datalar doğru dönüyor.



< Resime gitmek için tıklayın >


Bu mesaja 1 cevap geldi.
M
18 yıl (300 mesaj)
Teğmen
Konu Sahibi

Teşekkürler Aspci79 .
resim koymanız konuyu daha anlaşılır hale getirdi.
ben ana grupların üst_id değerlerini 0 "sıfır" atmıştım. ana grupların ust_id'lerine kendi id numaralarını atınca sıralama doğru şekilde çalışıyor.
bu şekilde de işimi görüyor.
bu arada db oracle ama temel sql kodları zaten hemen hemen bütün db lerde aynı şekilde çalışıyor.


Bu mesaja 2 cevap geldi.
İ
18 yıl (1289 mesaj)
Binbaşı

quote:

Orjinalden alıntı: mc92001

Teşekkürler Aspci79 .
resim koymanız konuyu daha anlaşılır hale getirdi.
ben ana grupların üst_id değerlerini 0 "sıfır" atmıştım. ana grupların ust_id'lerine kendi id numaralarını atınca sıralama doğru şekilde çalışıyor.
bu şekilde de işimi görüyor.
bu arada db oracle ama temel sql kodları zaten hemen hemen bütün db lerde aynı şekilde çalışıyor.



Önemli değil , aslında yazılımla uğraşırken sorunları biz karmaşıklaştırıyoruz çoğu zaman , farklı pencerelerden bakabilmeyi forum okumayı bu yüzden seviyorum.

İyi Çalışmalar dilerim.



G
18 yıl (3633 mesaj)
Yarbay

quote:

Orjinalden alıntı: mc92001


bu arada db oracle ama temel sql kodları zaten hemen hemen bütün db lerde aynı şekilde çalışıyor.



veri tabanı oracle ise connect_by prior (ansi değil pl/sql ama güzel bir şey) de deneyebilirsiniz.

select ad, alt_id, ust_id, level
from tablo
connect by prior alt_id = ust_id
start with alt_id = 1;

şeklinde bir kullanımı var. Tabi sonuçta seceresini getirecektir. Ancak sabit kırılım olmayan sistemlerde çok işe yarıyor...


Bu mesaja 1 cevap geldi.
M
18 yıl (300 mesaj)
Teğmen
Konu Sahibi

quote:

Orjinalden alıntı: gergozen


quote:

Orjinalden alıntı: mc92001


bu arada db oracle ama temel sql kodları zaten hemen hemen bütün db lerde aynı şekilde çalışıyor.



veri tabanı oracle ise connect_by prior (ansi değil pl/sql ama güzel bir şey) de deneyebilirsiniz.

select ad, alt_id, ust_id, level
from tablo
connect by prior alt_id = ust_id
start with alt_id = 1;

şeklinde bir kullanımı var. Tabi sonuçta seceresini getirecektir. Ancak sabit kırılım olmayan sistemlerde çok işe yarıyor...



Çok Teşekkürler.
Bunu keşke 2 hafta önce öğrenseydim. bu sql'in dündürdüğü sonucu alabilmek için db'ye bir procedure yazdım. baya uğraşmıştım.Bu kadar basitmiş.
genelde pl/sql çok fazla başvurmuyorum. ama herşeyi kod yazarak çözemiyorsunuz. Bazen ufak tefek db fonksiyonları sizi büyük bir kod yığını yazmaktan kurtarıyor. Bu konuyu zaten çözdüm ama yazdığınız sql başka bir konuda bana çok yardımcı oldu. Sanırım bundan sonra kod yerine db fonksiyonu ve procedure'lere daha çok başvuracağım.
İyi Çalışmalar.


Bu mesaja 1 cevap geldi.
G
18 yıl (3633 mesaj)
Yarbay

quote:

Orjinalden alıntı: mc92001


quote:

Orjinalden alıntı: gergozen


quote:

Orjinalden alıntı: mc92001


bu arada db oracle ama temel sql kodları zaten hemen hemen bütün db lerde aynı şekilde çalışıyor.



veri tabanı oracle ise connect_by prior (ansi değil pl/sql ama güzel bir şey) de deneyebilirsiniz.

select ad, alt_id, ust_id, level
from tablo
connect by prior alt_id = ust_id
start with alt_id = 1;

şeklinde bir kullanımı var. Tabi sonuçta seceresini getirecektir. Ancak sabit kırılım olmayan sistemlerde çok işe yarıyor...



Çok Teşekkürler.
Bunu keşke 2 hafta önce öğrenseydim. bu sql'in dündürdüğü sonucu alabilmek için db'ye bir procedure yazdım. baya uğraşmıştım.Bu kadar basitmiş.
genelde pl/sql çok fazla başvurmuyorum. ama herşeyi kod yazarak çözemiyorsunuz. Bazen ufak tefek db fonksiyonları sizi büyük bir kod yığını yazmaktan kurtarıyor. Bu konuyu zaten çözdüm ama yazdığınız sql başka bir konuda bana çok yardımcı oldu. Sanırım bundan sonra kod yerine db fonksiyonu ve procedure'lere daha çok başvuracağım.
İyi Çalışmalar.




PL/SQL 'in oldukça güzel çözümleri var aslında. Ama bunları kullanmak, ileride veritabanı değişikliği gerekirse çok büyük sorunlar doğurabilir... Onun için ansi sql ve kodlarla çözüme gidilemediği çok özel durumlarda kullanılmasında fayda var tabi.

Size de iyi çalışmalar...





< Bu mesaj bu kişi tarafından değiştirildi gergozen -- 21 Aralık 2008; 20:35:55 >

DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.