MySQL query problem...

4 отговора 182 прегледа
#1

MySQL query problem...

Zdraveite

treniram se (enutsiast :)) s edno forumche. Tablicata e:
ID int(4) - primary key (ID na message)
RootID - Id na temata (glavnoto message)
ParentID - Id na message, na koito e otgovoreno s tekushtia message

celta e da polucha all messages po dadena tema, podredeni kakto sa tezi tuk (na clubs.dir.bg)

Opitah dosta neshta, v Net namerih razni rekursivni reshenia ot PHP strana (koeto e adski neefektivno).

Reshenie na problema v M$SQL ne e trudno da se napishe (ot pile mliako v SQL-a).
Ta pitam vi - "Moje li da se poluchi podredba na zapisite po ukazania nachin bez pomoshtta na dopylnitelna kolona?". Zashtoto mi mina prez glavata i ideiata za NextID i da si pazia svyrzan spisyk v tablicata, no pyk bez tranzakcii (a samo LOCK TABLES ne e mnogo sigurno) shte razchitam na kysmeta si samo :)

E, shte se radvam da chuia vasheto mnenie :)

Pozdravi

Отговор
в отговор на inat_po4ti #2

Re: MySQL query problem...

мм
не ми идва нищо на ум
освен ако направиш някоя химия с IDтата, тоест така да ги генерираш, че накрая с едно просто сортиране да излизат в реда, в който искаш...


въпреки всичко мисля, че варианта да ги подреждаш с РНР никак не е лош...това е потребителски интерфейс, така че скоростта не е критична...

[линк]
Отговор
в отговор на bofh #4

Re: MySQL query problem...

Bofh

Не върши работа ама хич в общия случай ...

Освен в случай, че обозначаваш на корена на всяко дърво с препратка към себе си. Или пък ако йерархията е със само един корен.

ID, ParentID

11, 11
23, 11
9, 11
и т.н.

Защтото това си е въпрос на дизайн на ниво приложение. Най често за целта се използва NULL или 0

11, NULL
23, 11
9, 11

за да се обозначи, че е те този ID си няма ParentID.

11, 11 ще ти създаде доста проблеми защото се зацикля към себе си. А комай всички алгоритми за работа с дървета са рекурсивни и това може да ти отрови живота.

salle.online.bg/sig
Отговор
в отговор на salle #5

Re: MySQL query problem...

sega si spomnqm.. che si vzeh izpita po-programirane bez da se qvqvam na takyv :-) za tova che napisah programa koqto preobrazuva dadena rekursivna programa v iterativna...t.e vsqka programa koqto izpolzva rekursiven algoritym lesno se preobrazuva v iterativna, no vremeto i slojnosta se zapazvat (no stava po-stabilno reshenie)
E tova sa gluposti i prostotii taka che ne chete tozi post

Отговор