Mailinglisten-Archive |
> Moin allerseits, > > ich habe eine Tabelle, die folgendermaßen aufgebaut ist. > > id | parent | name > ---|--------|------ > 1 | 0 | Name01 > 2 | 0 | Name02 > 3 | 0 | Name03 > 4 | 1 | Name04 > 5 | 1 | Name05 > 6 | 4 | Name06 > > etc... Da ich das gerade in PHP programiert habe: (id=inode,parent=parent,name=ktitel) ================================================================== $mynode=$node; $depth=0; while($mynode>=1 and $depth<=30){ $sql="SELECT parent,ktitel FROM inodes WHERE inode='$mynode'"; $result = mysql_query($sql,$faq_dbh) or die ("Invalid query".mysql_error()); while ($row = mysql_fetch_array($result)) { $path[]=$mynode; $path_titel[$mynode]=$row[ktitel]; // echo "Found: $row[titel] $row[parent]<BR>\n"; $mynode=$row[parent]; } $depth++; } $path=array_reverse($path); echo "<BR>"; echo "<a href=\"$SCRIPT_NAME\">/</a> "; for ($i=1; $i<count($path); $i += 1) { $newnode=$path[$i]; echo "<a href=\"$SCRIPT_NAME?node=$newnode\">"; echo $path_titel[$newnode]; echo "/</a> "; } ================================================================== Mit einem Select geht es bestimmt nicht da du nicht weist wie tief du im Baum bist. Wenn du wüsstest das du genau 3 ebenen tief bist würde folgender select gehen: SELECT i3.ktitel,i2.ktitel,i1.ktitel FROM inodes AS i1,inodes AS i2,inodes AS i3 WHERE i1.inode=11 AND i1.parent=i2.inode AND i2.parent=i3.inode; Wenn du maximal 10 ebenen tief sein kannst geht auch folgender SELECT: SELECT i10.ktitel,i9.ktitel,i8.ktitel,i7.ktitel,i6.ktitel,i5.ktitel,i4.ktitel,i 3.ktitel,i2.ktitel,i1.ktitel FROM inodes AS i1 LEFT JOIN inodes as i2 ON (i1.parent = i2.inode) LEFT JOIN inodes as i3 ON (i2.parent = i3.inode) LEFT JOIN inodes as i4 ON (i3.parent = i4.inode) LEFT JOIN inodes as i5 ON (i4.parent = i5.inode) LEFT JOIN inodes as i6 ON (i5.parent = i6.inode) LEFT JOIN inodes as i7 ON (i6.parent = i7.inode) LEFT JOIN inodes as i8 ON (i7.parent = i8.inode) LEFT JOIN inodes as i9 ON (i8.parent = i9.inode) LEFT JOIN inodes as i10 ON (i9.parent = i10.inode) WHERE i1.inode=11; Dann must du aber immer noch in einer Schleife die "NULL" spalten wegwerfen/ignorieren. ------------------------------------------------------------------- Wim Bonis ,+'^'+, Telefon:0631-31662-0 Internet Solution Service GmbH Technik:0631-31662-15 +,.,+ privat:0631-36071-80 email: bonis_(at)_solution-service.de 67655 Kaiserslautern Karl-Marx-Str. 13 --== VIA-NETWoRKS KL ==-- --- !!NEU!! Fragen und Antworten zu MySQL und dieser Liste unter -->> http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive