こんにちは、自己参照型のデータベース テーブルがあります。基本的には、すべての種と分類学的分類レベルが含まれています。たとえば、以下にタートル レコードがあります。
tsn_id name rank_id parent_id
123 turtle 220 349
このタートル レコードの親は turtle_family レコード (同じテーブルにあります) であり、parent_id が 0 になるまで続きます。0 は動物界を意味します (animalia parent_id 0)
tsn_id name rank_id parent_id
349 turtle_family 210 465
亀のように種ごとの記録を上げていきたいです。ここに私の試みがあります
<?php
function get_each_species_record(){
$db = dbConnect();
$query= "select * from species_records where rank_id = 220"; //this rank_id is species
$result = $db -> Execute($query);
while($row=$result->FetchRow())
{
$tsn_id= $row['tsn'];
$complete_name = $row['complete_name'];
$parent_tsn = $row['parent_tsn'];
$rank = $row['rank_id'];
//* My objective *
//for each species
//take its parent tsn
//where tsn = parent tsn
//take that parents tsn
//where tsn = parent tsn
//till parent tsn = 0
climbtree($tsn_id);
}
}
//recursive function for each species
function climbtree($tsn_id){
if($parent_tsn == 0){
return 1; //quit and go onto next speices record?
}
else{
$queryone= 'select * from species_records where tsn = $parent_tsn';
$resultone = $db -> Execute($queryone);
return climbtree($tsn_id);
}
}
?>