SQL Hiyerarşi Sorgusu Yardım Gerekli
-
Gençler takıldığım bir yer var, nette çözümlere baktığımda istediğim gibisini bulamadım
Şöyle bir tablo yapım mevcut içerisindeki verileri açıklayıcı olması amacıyla öyle girdim.
Benim yapmak istediğim ise tek sorguda şu şekilde çıktı elde etmek
Not: Önce en üst katman sonra alt katmanları gelecek şekilde olmasını istiyorum.
-
select id,baslik,parentid
group by baslik
ne sonuc veriyor hocam
-
Hocam bu isimlendirmeye göre doğru veriyor fakat, oradaki "Ana, çocuk" gibi isimlendirmeler temsili. Zira orası değişince istediğim sonucu vermiyor.
Oradaki isimlendirmeye takılmayın.
-
Ayrı tabloda tutman mantıklı olanı değil mi ?
Root' un aynı tabloda olmaması lazım, yani yapılır da ekstra uğraştırır bence.
Verdiğin datalara nazaran, alfanumerik sıralama ile istediğin sıralamada data alınır zannımca.
Sql için şöyle yapın demişler;
http://www.essentialsql.com/use-sql-server-to-sort-alphanumeric-values/
Onun dışında başlıklar tamamen birbirinden alakasız ise, root' ların dediğim gibi ayrı tabloda olması daha doğru.
Yani null olursa parentid' si null' ın id' sine eşit olanları sıralamaya ekle gibi bişey yazmak lazım da sql olarak ifade edemedim.
Sorunla çok alakası olmayabilir ama şu da bulunsun :
Wikipedia: The SQL standard does not explicitly define a default sort order for Nulls. Instead, on conforming systems, Nulls can be sorted before or after all data values by using the NULLS FIRST or NULLS LAST clauses of the ORDER BY list, respectively. Not all DBMS vendors implement this functionality, however. Vendors who do not implement this functionality may specify different treatments for Null sorting in the DBMS.
-
@ozgunlu, hocam sistemi ben yazmadım. O yüzden böyle devam etmek zorundayım. Aynı tabloda parent child ilişkisi yapmam gerekiyor.
-
en kolayı bir fonksiyon oluşturup fonksiyonun içinden aynı fonksiyonu geri çağırmandır. şu linke bakabilirsin fikir oluşturması açıısından gene yapmassan yardımcı olurum.
http://stackoverflow.com/questions/21475906/how-to-create-recursive-function-for-hierarchy-results-from-php-array
-
ontedi bunu yazdı
@ozgunlu, hocam sistemi ben yazmadım. O yüzden böyle devam etmek zorundayım. Aynı tabloda parent child ilişkisi yapmam gerekiyor.
Galiba bu : http://stackoverflow.com/questions/10369634/tree-structure-data-query-in-sql-server
Deneyemedim.
-
@Arlong hocam verdiğin örnek php taraflı halletmeye çalışıyor.
@Ozgunlu hocam linkteki örnek zaten elimde mevcut fakat ondaki listeleme şu şekilde olmaktadır.
Ana 1
Ana 2
Ana 3
Ana 4
Ana 1 Çocuk 1
Ana 1 Çocuk 2
Ana 2 Çocuk 1
Ana 2 Çocuk 2
Ana 2 Çocuk 3vs.. şeklinde listlemektedir. Yani önce parent sonra child olanlar listeleniyor. İstediğim ise her parent altında child olanlar gelsin.
-
ontedi bunu yazdı
@Arlong hocam verdiğin örnek php taraflı halletmeye çalışıyor.
@Ozgunlu hocam linkteki örnek zaten elimde mevcut fakat ondaki listeleme şu şekilde olmaktadır.
Ana 1
Ana 2
Ana 3
Ana 4
Ana 1 Çocuk 1
Ana 1 Çocuk 2
Ana 2 Çocuk 1
Ana 2 Çocuk 2
Ana 2 Çocuk 3vs.. şeklinde listlemektedir. Yani önce parent sonra child olanlar listeleniyor. İstediğim ise her parent altında child olanlar gelsin.
Ya bu ? http://stackoverflow.com/questions/9676637/sql-parent-child-tree-with-sort-order
Hocam "tree", "sort" senin anahtar kelimelerin google' da oradan yürü bence. Sql server yüklü olmadığı için deneyemiyorum.
Öyle bulduğumu koydum.
-
Yok gençler bir türlü olmadı. Akşam üzeri bir updullah
-
Zannedersem bahsettiğin mevzu doğal sıralama (natural sorting)
http://www.mysqltutorial.org/mysql-natural-sorting/
https://stackoverflow.com/questions/17354217/natural-sorting-sql-order-by