gpt4 book ai didi

sql - 寻找一个查询以仅显示同一级别的节点

转载 作者:行者123 更新时间:2023-12-04 21:50:27 26 4
gpt4 key购买 nike

enter image description here

上图显示了嵌套模型树方法。我正在搜索一个查询,当调用 FRUIT 或 MEAT 时,该查询将仅显示带有节点 FRUIT 和 MEAT 的级别编号 1

一世

我已经制定了一个 child 和 sibling 的组合,我认为当红色被称为如下时拉牛肉。

 INSERT 



$sqlinsert = "INSERT INTO categories
(categories_id, parent_id,name, parent)
VALUES('','','$name', '$parent')";
$enterquery = mysql_query($sqlinsert) or die(mysql_error());
$customer_id = mysql_insert_id();

我希望插入 parent_id 通关一个新填充的称为 parent 将与名为“name”的现有字段相关,然后如果 parent 字段 = 到现有名称字段,则从该名称字段中获取 category_id 并将其作为 parent_id新的插入名称。

例如,用户插入名称“blue”和父“food”,那么名称 blue 将采用食物的类别 id,并将其放置为 blue 的 parent_id...

最佳答案

你确定你想要 left_node 和 right_node NOT NULL 吗?你用什么值来表示一片叶子(例如,香蕉)?对这个问题没有关系。

您似乎正在使用 MySQL,它没有实现回答这个问题的最佳方式。你想要一个 递归 CTE .但是,作为黑客,您可以执行以下操作:

CREATE VIEW parents AS 
SELECT c.category_id AS parent,
c2.category_id AS child
FROM categories c JOIN categories c2
ON c2.category_id=c.left_node OR c2.category_id=c.right_node;

您现在可以通过
SELECT child FROM parents
WHERE parent NOT IN (SELECT child FROM parents);

NOT IN 子查询返回根。要获得任意级别,据我所知,您需要一个递归或迭代过程或一个允许递归 CTE 或更可怕 View 的数据库。

[编辑:您可以在一个难以阅读的 SELECT 中执行此操作
SELECT child FROM parents
WHERE parent NOT IN (SELECT child FROM
( SELECT c.category_id AS parent,
c2.category_id AS child
FROM categories c JOIN categories c2
ON c2.category_id=c.left_node OR c2.category_id=c.right_node) AS anyname);

]

关于sql - 寻找一个查询以仅显示同一级别的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5762913/

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