gpt4 book ai didi

php - 使用排名列显示孙子数量

转载 作者:行者123 更新时间:2023-11-29 02:53:23 25 4
gpt4 key购买 nike

我正在开发一个专注于动物的网站,并且一直在努力弄清楚如何显示分类单元的孙辈、曾孙辈等的数量。

这个脚本似乎可以很好地显示 child 的数量,除了它显示无意义的数字,例如物种 13,它应该有 0 个 child 。

$stm = $pdo->prepare("SELECT Ch2.Taxon, COUNT(*) - 0 Children
FROM gz_life_mammals Ch
LEFT OUTER JOIN gz_life_mammals Ch2 on Ch.Taxon = Ch2.Taxon
WHERE Ch2.Parent = :MyURL
GROUP BY Ch.Parent");
$stm->execute(array(
'MyURL'=>$MyURL,
));

while ($row = $stm->fetch())
{
$ChildrenCount = $row['Children'];
}

echo $ChildrenCount;

我无法让它显示正确的孙子数量;结果非常不规则。

于是我想出了另一个方案。下面是我的数据库表中的一些数据,以父子关系排列。

**Taxon | Parent | Rank**

Mammalia | Chordata | 25

Carnivora | Mammalia | 35

Canidae | Carnivora | 45

Canis | Canidae | 55

Canis-lupus | canis | 65

假设我导航到页面 MySite/life/carnivora,我想知道有多少物种按此顺序排列。这意味着我必须确定 Carnivora 有多少曾孙。

如果我不能以传统方式做到这一点,那么也许我可以让它向后工作。我只是编写了一个查询,计算字段 Rank 的值为“65”且其曾祖 parent 为“Carnivora”的每一行。

现在有人知道如何编写这样的查询吗?

最佳答案

我认为您的问题可以从递归查询中获益。显然在 MySql 中不可能,所以我寻找解决方法。所以:基本上是从this Q/A中一个字符一个字符地提取字符.链接到那里from this .通过大型 oogling 搜索引擎发现。

我对发布这个答案犹豫不决,因为我不完全确定这里发生了什么。 (例如,我不知道第一个链接帖子中提到的“危险”是否对您的情况有影响。在实时系统上使用它之前,您肯定要小心

此查询返回 :MyUrl 拥有的后代数。

SELECT  COUNT(@id := (
SELECT `taxon`
FROM gz_life_mammals
WHERE `parent` = @id
)) AS numDescendants
FROM (
SELECT @id := :MyUrl
) vars
STRAIGHT_JOIN gz_life_mammals
WHERE @id IS NOT NULL;

有趣的是,如果您从 @id := (SELECT ... 周围删除 COUNT(),您将获得所有后代 的列表加上一个 NULL

关于php - 使用排名列显示孙子数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33226269/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com