Php 什么是MYSQL查询来检查返回的数组中是否有更多的引用递归?
我有这张桌子 我的桌子 我有一个递归函数来显示结果Php 什么是MYSQL查询来检查返回的数组中是否有更多的引用递归?,php,mysql,sql,recursion,Php,Mysql,Sql,Recursion,我有这张桌子 我的桌子 我有一个递归函数来显示结果 $query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$1 "); 所以这个查询将返回 返回阵列=3,4 他们停在那里。没有条目将它们作为参考 但是 返回 返回阵列=5,6 第五个层次更高 那么,我如何检查ReturningArray是否有更多级别的引用,或者它只是停在那里?如果只需要一个级别的引用检查,可以使用以下SQL进行检查: $dbLink = mysqli_co
$query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$1 ");
所以这个查询将返回
返回阵列=3,4
他们停在那里。没有条目将它们作为参考
但是
返回
返回阵列=5,6
第五个层次更高
那么,我如何检查ReturningArray是否有更多级别的引用,或者它只是停在那里?如果只需要一个级别的引用检查,可以使用以下SQL进行检查:
$dbLink = mysqli_connect(); //host, user, pass etc go here as arguments
$refId = 1; // your ReferenceID
$refIdEscaped = mysqli_escape_string($refId); //always remember to escape input
$query = "SELECT main.*,
CASE WHEN ref.ReferenceID IS NULL THEN 1 ELSE 0 END as recursion_exists
FROM myTABLE main
LEFT JOIN myTABLE ref ON main.ReferenceId = ref.ID
WHERE main.ReferenceID = '{$refIdEscaped}'";
您将使用一个附加列(recursion\u exists
)从表中获取所有数据,该列的值为1(如果存在递归)或0(如果不存在)
对于多个递归,您也可以使用sql,添加更多的
LEFT JOIN
s,如上面的示例所示。您可以显示完整的递归函数吗?因此,您希望第二个示例返回5,6,7,因为它的ref_id等于id=5?否。如果将来是否引用了5,6,只需要一个二进制答案。$query2=mysql\query(“SELECT main.*,如果ref.popid为NULL,则1 ELSE 0结束为递归_存在于paints main LEFT连接paints ref ON main.popid=ref.id,其中main.popid={$id}”);$tmprow=mysql_fetch_数组($query2);$recexist=$tmprow[“recursion_exists”];if($recexist==1){$classFloat=“float LEFT”;}ELSE{$classFloat=”“}解释什么“似乎不起作用”的意思是,错误/结果是什么。如果你把你的表贴在上面会好得多,我不同意-它确实起作用:)。看看这把小提琴(我从你的问题中添加了一些行,测试了查询,很好)-它起作用:它不起作用。“WHERE main.popid=2;“应该返回5=1,6=0以及您提供的数据(id:ReferenceID),就像上面的(5:2),(6:2)一样,它肯定会按照预期工作。请修改我发布的小提琴,使用您实际拥有的数据,并解释所需的结果以及您期望这些结果的原因。”。
$query = mysql_query("SELECT * FROM myTABLE WHERE ReferenceID =$2 ");
$dbLink = mysqli_connect(); //host, user, pass etc go here as arguments
$refId = 1; // your ReferenceID
$refIdEscaped = mysqli_escape_string($refId); //always remember to escape input
$query = "SELECT main.*,
CASE WHEN ref.ReferenceID IS NULL THEN 1 ELSE 0 END as recursion_exists
FROM myTABLE main
LEFT JOIN myTABLE ref ON main.ReferenceId = ref.ID
WHERE main.ReferenceID = '{$refIdEscaped}'";