SQL Hiyerarşi Sorgusu Yardım Gerekli
-
Baba normal bir sorgu ile bu olayı çözmen zor.
Php ile çalışıosan bu şekilde halledebilirsin. Ama baya complike bi sql yazmak lazım sanal tablolu falan sanki.
$Sql = mysql_query("Select * from Tablo where parentid = null"); while ($parent= mysql_fetch_object($Sql)) { echo $parent->baslik; $childSql = mysql_query("Select * from Tablo where parentid='".$parent->id."'"); while ($child = mysql_fetch_object($childSql )) { echo $child->baslik; } }
-
Ya arkadaşlar bahsettiğim olay tamamen kategori ve alt kategori mantığı
Kategori A
Kategori A'nın 1. Alt Kategorisi
Kategori A'nın 2. Alt Kategorisi
Kategori A'nın 3. Alt Kategorisi
Kategori A'nın 3. Alt Kategorisinin 1. Alt Kategorisi
Kategori A'nın 3. Alt Kategorisinin 2. Alt Kategorisi
Kategori B
Kategori B'nın 1. Alt Kategorisi
Kategori B'nın 2. Alt Kategorisi
Kategori B'nın 2. Alt Kategorisinin 1. Alt Kategorisi
Kategori B'nın 2. Alt Kategorisinin 1. Alt Kategorisinin 1. Alt Kategorisi
Kısaca böyle söyleyeyim, umarım açıklayıcı olmuştur.
Not: Her şeyi SQL tarafında halletmem gerekiyor, ASP, .NET, PHP vs.. çözümü ile yaklaşmayın lütfen.
-
;With Hierarchy(baslik, parentid, id, FullyQualifiedName, Level) As ( Select E.baslik, E.parentid, E.id, Cast(E.baslik+'.' as NVarchar(MAX)), 0 From Categories E Where E.parentid IS null Union all Select E.baslik, E.parentid, E.id, H.FullyQualifiedName+''+E.baslik+' > ', H.Level+1 from Categories E inner join Hierarchy H on H.id=E.parentid ) SELECT * FROM Hierarchy
-
Hocam, sorgumda hiçbir parametre göndermeyeceğim.
-
hocam sorguyu kopyala yapıştır. tablo adını değiştir yeter. parametre göndermene gerek yok.
-
Hocam yine aynı sonuç, önce bütün üst kategorileri listeliyor daha sonra da üst kategorilere ait alt kategorileri listeliyor.
-
en sona
SELECT * FROM Hierarchy order by FullyQualifiedName ASC olarak değiştir.
ce baslık kolonunda ana kategori ismini kullanma. gönderdiğim sorgu zaten onu hallediyor.
ben kullanıyorum olmamasına imkan yok.
manglerman tarafından 17/Haz/16 18:31 tarihinde düzenlenmiştir -
manglerman bunu yazdı
en sona
SELECT * FROM Hierarchy order by FullyQualifiedName ASC olarak değiştir.
Yok hocam olmadı, asc yada desc olayına takılmayın orada yazdığım sütun değerleri bambaşka değerler içeriyor aslında. Ben onları öylesine açıklayıcı olması için girdim.
Şu konuyu tam deaylı aramadım ama stackoverflow amcada da bulamadım.
-
-
Austen bunu yazdı
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
Hocam buna baktın mı?
Verilere ve sonuca baktın mı bunun doğru olması lazım.
Bu değilse olayı biraz daha açıklayıcı anlatman gerekiyor.