我正在开发一个专注于植物和动物的网站。我有展示父母,祖父母和孩子的脚本。但我想学习如何展示孙子,曾孙等名单。
Taxons(field Taxon)在我的数据库中以父子关系列出。田地等级包括每个分类群的数值等级(例如物种为65)。这种关系看起来像这样:
Chordata (phylum, Rank = 15)
Mammalia (class, Rank = 25)
Carnivora (order, Rank = 35)
Felidae (family, Rank = 45)
Panthera (genus, Rank = 55)
Panthera-leo (species, Rank = 65)
分类单元也匹配网址。例如,您将导航到MySite / life / panthera-leo以查找有关狮子(Panthera leo)的信息。
这是我目前用于显示兄弟姐妹数量的脚本:
$stm = $pdo->prepare("select L.Taxon, count(*) - 1 Siblings
from gz_life_mammals L
inner join gz_life_mammals L on g.Parent = L.Parent
where L.Taxon = :MyURL
group by L.Parent");
$stm->execute(array(
'MyURL'=>$MyURL,
));
while ($row = $stm->fetch())
{
$SiblingsCount = $row['Siblings'];
}
以下是我用来按名称显示兄弟姐妹列表的查询:
$stm = $pdo->prepare("SELECT Taxon, NameCommon, Parent from gz_life_mammals
WHERE Parent = :Parent AND Taxon <> :MyURL
ORDER BY NameCommon, Taxon");
$stm->execute(array(
'MyURL'=>$MyURL,
'Parent'=>$Parent
));
while ($row = $stm->fetch())
{
$Taxon = $row['Taxon'];
$NameCommon = $row['NameCommon'];
}
假设我们导航到MySite / life / Mammalia(一个类)。我想显示该班级的订单,家庭,属和种类的数量。我应该为每个查询编写单独的查询,还是有办法在一个查询中获取子项,孙子等的数量?
为了澄清,我想我对展示孩子的数量等更感兴趣。显示一个孩子的名字列表相对容易,但是一个盛大的列表 - 孩子通常会占用太多空间。但是,让游客知道某个分类中的儿童,孙子,曾孙等的数量真的很酷。有人可以建议一个好的查询吗?
ON EDIT:这里更好地了解数据库架构。
分类| NameCommon |家长|等级
哺乳动物|哺乳动物| Chordata | 25
Carnivora | carnivoran |哺乳动物| 35
Ursidae |熊| Carnivora | 45
Ursus |熟悉的熊| Ursidae | 55
Ursus-arctos |棕熊| Ursus | 65
在这个特殊的例子中,哺乳动物会(我猜测)大约15个孩子(食肉目和所有其他哺乳动物的命令)。它可能有75个大孩子(哺乳动物家庭),500多个大孙子(属)和大约8,000个伟大的大孩子(物种)。
另一方面,家庭Ursidae将有三到四个孩子(包括Ursus属)和六个大孩子(物种)。