gpt4 book ai didi

mysql - MySQL 中的单向连接和 "n degrees of seperation"?

转载 作者:行者123 更新时间:2023-11-29 14:49:41 25 4
gpt4 key购买 nike

我有一个具有整数 ID 的实体表,我们将其称为实体。在另一个表中,我通过“从”、“到”列以及它们之间的关系类型(我们将此表称为“关系”)来在这些实体之间建立单向关系。实体可能是“双向”的,具有两个相应的单向关系,并且整体事物是一个图形或网络。

我正在编写一个例程,我可以向它传递一个实体 ID 以及要分离的程度,然后它返回所传递 ID 的许多关系中的每个实体 ID。我不知道如何编写这个例程。这种迭代的性质超出了我对存储过程的经验。有任何线索如何开始吗?

最佳答案

对于具有 from_id 和 to_id 列的表关系

DROP PROCEDURE IF EXISTS find_relationships;
DELIMITER $$

CREATE PROCEDURE find_relationships( start_id int(11), level int(11) )
BEGIN
DECLARE found INT(11) DEFAULT 1;
DROP TABLE IF EXISTS related_entities;
CREATE TABLE related_entities (id int(11) PRIMARY KEY) ENGINE=HEAP;
INSERT INTO related_entities VALUES ( start_id );
WHILE found > 0 AND level > 0 DO
INSERT IGNORE INTO related_entities
SELECT DISTINCT from_id FROM relationships r
JOIN related_entities rf ON r.to_id = rf.id
UNION
SELECT DISTINCT to_id FROM relationships r
JOIN related_entities rf ON r.from_id = rf.id;
SET found = ROW_COUNT();
SET level = level - 1;
END WHILE;
SELECT * FROM related_entities;
DROP TABLE related_entities;
END;
$$
DELIMITER ;

应该适用于任何图形,找到以水平给定的距离内的所有连接节点。

call find_relationships( 5, 2 );

关于mysql - MySQL 中的单向连接和 "n degrees of seperation"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6053373/

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