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