Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  rekursioon MYSQLis, PHP märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 26.02.2011 22:24:03 rekursioon MYSQLis, PHP vasta tsitaadiga

kas ainult mysqlis rekutsioon kah on võimalik?

mul on table, kus veerud id ja parent_id

tahaks kõik teatud id alla kuuluvad järglased välja võtta. samuti oleks vaja teises kohas nad kokku lugeda. saan ma seda mysql päringuga teha või pean ikka php abiks võtma?

_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
atari_
HV kasutaja
atari_

liitunud: 09.10.2004




sõnum 27.02.2011 07:26:06 vasta tsitaadiga

järglaste arvu peaks saama nii:
select count(id) from tabel where parent_id = 'mingi_id'

_________________
Kommentaarid: 94 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 80
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 27.02.2011 11:02:45 vasta tsitaadiga

See annab vahetud järglased, kuid ei loe kokku kogu alampuu lehti.
MySQL-s rekursiivseid funktsioone ei ole minu teada (nagu PostgreSQL WITH RECURSIVE ja connectby).

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 28.02.2011 12:52:54 vasta tsitaadiga

kusjuures ma kusagil nägin päringut, mis tagastas kogu puu struktuuri õiges järjekorras. Nii, et php-s oli ainult üks for/while tsükkel.
Otsin, äkki leian, selle algoritmi jaoks oli ka mingi oma nimetus.

Edit, leidsingi ülesse
http://articles.sitepoint.com/article/hierarchical-data-database/

Tegu pole küll rekursiooniga aga tulemus peaks olema võrdväärne
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 28.02.2011 12:59:08 vasta tsitaadiga

andresv, see pole ju see mis ma küsisin icon_confused.gif
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
karu
HV kasutaja

liitunud: 08.08.2002




sõnum 28.02.2011 13:11:16 vasta tsitaadiga

kui järglaste arv on limiteeritud, siis saad 'left join' kasutaded kõik tasemed kätte ühe päringuga.

kui järglasi on piiramata, siis tõmba parent/child id'd php'sse sorteeri ära ja tõmba id'de järgi juba terved read. kui php sorteerimine aeglaseks jääb, siis rekursiivsed päringud lasevad MySQL ammugi õhtale.
Kommentaarid: 1 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 1
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 28.02.2011 13:39:27 vasta tsitaadiga

mul pole probleem teha rekursiooni, lihtsalt huvitas, kas rekursiivne mysql statement on võimalik.
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
serk
HV kasutaja

liitunud: 24.05.2003




sõnum 01.03.2011 22:15:14 Re: rekursioon MYSQLis, PHP vasta tsitaadiga

keevitaja kirjutas:
kas ainult mysqlis rekutsioon kah on võimalik?

mul on table, kus veerud id ja parent_id

tahaks kõik teatud id alla kuuluvad järglased välja võtta. samuti oleks vaja teises kohas nad kokku lugeda. saan ma seda mysql päringuga teha või pean ikka php abiks võtma?


Relatsioonilised andmebaasid ei ole mõeldud hierarhilise data hoidmiseks ja punkt.

aga vastus sinu küsimusele:
http://dev.mysql.com/tech-resources/articles/hierarchical-data.html
Kommentaarid: 8 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum
okpoiss
HV kasutaja
okpoiss

liitunud: 07.11.2001




sõnum 03.03.2011 12:52:03 vasta tsitaadiga

Selleks, et saada kätte id'd ja iga id laste arvu kasuta left joini

select t1.id, count(t2.parent_id)
from tabel t1
left join tabel t2 ON t2.parent_id = t1.id
group by t1.id

Vajadusel saad lisada WHERE lause, et anda soovitud ID'd ette.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
keevitaja
AM 10 aastat
keevitaja

liitunud: 05.11.2001




sõnum 03.03.2011 12:58:54 vasta tsitaadiga

mulle tundub, et see annab siiski ainult otsesed järeltulijad, mitte aga lõpuni välja kogu puud
_________________
Hinnavaatlus ei ole koht arvamuse avaldamiseks!
Kommentaarid: 51 loe/lisa Kasutajad arvavad:  :: 1 :: 3 :: 40
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Renka
HV Guru
Renka

liitunud: 01.04.2002




sõnum 03.03.2011 22:03:21 vasta tsitaadiga

keevitaja kirjutas:
mulle tundub, et see annab siiski ainult otsesed järeltulijad, mitte aga lõpuni välja kogu puud
nii ta on.

Aga vaata antu sulle alles ju link icon_wink.gif
Nested Set Model on oma kogemustel päris asjalik asi.

_________________
There is no place like 127.0.0.1
Kommentaarid: 71 loe/lisa Kasutajad arvavad:  :: 2 :: 1 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nemu
HV vaatleja
nemu

liitunud: 22.01.2002



Autoriseeritud ID-kaardiga

sõnum 04.03.2011 01:19:01 vasta tsitaadiga

Nö. täispuuna ( Ülem | Alam | Kaugus ) hoidmine on vahel sobiv.
Mugav pärida ja kindlasti kiirem kui rekursioon ja connect by.
Kommentaarid: 12 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 11
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  rekursioon MYSQLis, PHP
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.