Bent is savo patirties zinau kad medines strukturos retai buna dideles, paprastai tai kazkokios kategorijos ir pan.. retai tai buna milijonai ju... aisku medziu gali buti ir kitokiu. "If" <baska@hotmail.com> wrote in message news:ikli1s$rod$1@trimpas.omnitel.net... > Na tas nedidele, jei vienos gimines lygi :), tai rysius nustatineti paemus > viska i pradine lenta i ramus, galima zaisti. Bet daznai tas nedidele, > labai salyginis reiskinys. Daznai bazes iki keliu milijonu irasu, tai tik > vidutines ar mazos bazes. O paimti po kelis milijonus i objektus serveri, > kaip cia vienas dziaugsmingai su vajeeeeeee siule, kai tokiu objektu ne > vienas ir ne du, nesunku isivaizduoti kas su tuo vargsu servuku darysis.O > dar tokio pat dydzio objektus,mazai atfiltravus, perdavineti tinklu, tai > malonus potyriai dar labiau nenusakomi. > > "Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message > news:iklg7r$o50$1@trimpas.omnitel.net... >> 1. Sake kad db nedidele; >> >> 2. Toli grazu ne visada webservisus naudoju + pagrinde ten davineju >> sql.... >> >> "If" <baska@hotmail.com> wrote in message >> news:ikl7te$8jm$1@trimpas.omnitel.net... >>> Bet kokio dydzio lentai, cia viena lenta. Kuo ji didesne, tuo labiau turi >>> buti grieztai organizuota viena, duomenys istraukiami viena sql uzklausa. >>> Jordanai tu per nelyg iprates visus duomenis pasiimti i savo megstamus >>> web >>> servisus, ir po to atlikti manipuliacinius rysius tarp ju >>> Tai yra bet kokiu atveju neteisinga, tau minejau ne karta. Duomenis >>> visada >>> turi traukti taip, lyg butu lentose milijardas irasu, kitu atveju tavo >>> projektai optimaliai veiks, kol lentos bus pustustes. >>> "Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message >>> news:ikl5th$551$1@trimpas.omnitel.net... >>>> Nedidelem db laisvai daryt galima 1 lenta manau: >>>> >>>> objektas { id, parent_id, name, desc } >>>> >>>> kur parent id yra tevo id, po to traukt aliasindamas gali, pvz: >>>> >>>> >>>> select >>>> o1.id as o1_id, >>>> o1.name as o1_name >>>> -- vaikai >>>> o2.id as o2_id, >>>> o2.name as o2_name >>>> -- anukai >>>> o3.id as o3_id, >>>> o3.name as o3_name >>>> from >>>> objektas o1 >>>> left join objektas o2 on >>>> o2.parent_id = o1.id >>>> left join objektas o3 on >>>> o3.parent_id = o2.id >>>> >>>> Cia aisku tik pavizdys kaip susijoinina lenta su pacia savimi, >>>> nezinau >>>> kokia programavimo kalba darysi, paprastai medinem strukturom kurios >>>> didelio ar neriboto dydzio gerai tinka: >>>> >>>> 1. rekursija >>>> 2. lazy load -lazy load tai kada uzkrauni tik medzio pagrindinius >>>> elementus, o kada vartotojas atidarineja kazkuri uzkrauni jo vaikus ir >>>> t.t.. ta prasme is karto nekraunamas visas medis, o tik kada vartotojui >>>> to >>>> objekto vaiku prireikia, tai labai gerai tinka kada medis didelis ar net >>>> begalinis. >>>> >>>> Pvz tureciau as medzio controla, butu kazkas tokio: >>>> >>>> >>>> // Isivaizduokime TreeNode father Tag memberis visada saugos node id >>>> void FillTree (TreeNode father) { >>>> >>>> // nezinau kokiu budu dirbsi su db tai tik improvizuoju, kad >>>> daleiskime >>>> turime darbo su db biblioteka kuri turi tokia funkcija >>>> // paimame is db tik konkretaus elemento vaikus >>>> DataTable table = db.Query( >>>> "Select * From objektas Where prent_id = " + >>>> father.Tag.ToString()); >>>> >>>> / ** tokiu budu neprireikia mums visam algoritmui jokios sudetingos >>>> SQL >>>> uzklausos **/ >>>> >>>> >>>> // visus viakus pridedame prie medzio >>>> foreach(DataRow row in table.Rows){ >>>> >>>> // sukuriamas vaiko medinis elementas >>>> TreeNode kid = new TreeNode( >>>> row["name"].ToString()); >>>> >>>> // priskiriamas jam jo id >>>> kid.Tag = row["id"].ToString(); >>>> >>>> // Kazkada vaikas irgi tampa tevu :) >>>> // krauname vaiko vaikus - kvieciame sia funkcija tik kad pildytu >>>> ji - kaip sakant darome rekursija >>>> FillTree (kid); >>>> >>>> // pridedamas vaikas prie medzio >>>> // rasyta is galvos, o su tree dirbau senokai tai cia gali >>>> paklaidu >>>> buti, svarbu kaip mazdaug veikt turi parodyt noriu >>>> // is esmes prisidejo vaikas ir jo visi vaikai ir vaiku vaikai ir >>>> t.t.. >>>> // galima buvo pries kvieciant FillTree tapati daryti tada >>>> pirmiau >>>> ji pridetu o tik po to jo vaikus >>>> father.Nodes.Add(kid); >>>> } >>>> } >>>> >>>> >>>> O lazy load'ui labiau tinka OOP principas, isivaizduokime medzio >>>> elementas >>>> yra objektas: >>>> >>>> class Node : TreeNode { >>>> >>>> // metoda kviesti geriausiai kaip kreipiamasi i tree elementa kad >>>> pakraut vaikus >>>> public vod LoadKids (){ >>>> DataTable table = db.Query( >>>> "Select * From objektas Where prent_id = " + >>>> this.Tag.ToString()); >>>> >>>> // visus viakus pridedame prie medzio >>>> foreach(DataRow row in table.Rows){ >>>> >>>> // sukuriamas vaiko medinis elementas >>>> TreeNode kid = new TreeNode( >>>> row["name"].ToString()); >>>> >>>> // priskiriamas jam jo id >>>> kid.Tag = row["id"].ToString(); >>>> father.Nodes.Add(kid); >>>> } >>>> } >>>> } >>>> >>>> >>>> Na va siek tiek logikos pamastymams, kaip galima padaryti net neparasius >>>> jokios sudetingos SQL uzklausos, o trivialiai. >>>> >>>> Sekmes! >>>> JDM >>>> >>>> "Deivas" <sd@dfds.lt> wrote in message news:op.vrn66yehf76c7y@merkys... >>>> Dėkui labai visiems. Aš nei studentas nei ką, tiesiog prireikė čia tokį >>>> smulkų moduliuką parašyti, galvojau bus visai simple, bet va, susidūriau >>>> su tokiu galvosūkiu. Dar neturėjau laiko išbandyti pasiūlymų, bet manau, >>>> kad kas nors tiks. >>>> >>>> Tiesa, prieš kelias dienas atėjo mintis, kad galbūt mano lentelės >>>> struktūra tokima reikalui netinkama. Gal reikia perdaryti kitaip. Čia >>>> kažkas, berods, panašų sprendimą minėjo. Aš galvoju, kad reikia daryti >>>> dvi >>>> lenteles. >>>> Pirmoje - id, vardas, pavarde. >>>> Antroje - id, tevo id, motinos id. >>>> >>>> Tuomet gal būtų paprasčiau. Kurį variantą geriau pasirinkti. Duomenų >>>> nebus >>>> labai daug - na į metus koks 100 įrašų. >>>> Dar kartą ačiū. >>>> >>>> >>>> On Thu, 24 Feb 2011 21:41:54 +0200, Deivas <sd@dfds.lt> wrote: >>>> >>>>> Sveiki, >>>>> >>>>> gal pagelbėsit. Tarkim turiu tokią lentelę: >>>>> >>>>> Id >>>>> tevoId >>>>> motinosId >>>>> vardas >>>>> pavarde >>>>> >>>>> Kaip parašyti užklausą, kad parodytų asmens tėvus ir senelius, t.y.: >>>>> >>>>> id, vardas, pavarde, TevoVardas, MotinosVardas, TevoTevoVardas, >>>>> TevoMotinosVardas, MotinosTevoVardas, MotinosMotinosVardas >>>>> >>>>> Parašiau lakoniškai, bet tikiuosi esmę supratot. Ačiū iš anksto jeigu >>>>> užvesit ant kelio. >>>> >>>> >>>> -- >>>> Using Opera's revolutionary email client: http://www.opera.com/mail/ >>> >>> > >