나는 쿼리와 함께 다음과 같은 기능을 가지고 있습니다. 그것은 정수 ID와 함께 잘 작동하지만, ID가 varchar (ID : Xewi3adc)이면 작동하지 않습니다. 글쎄, 내가 어떻게 작동하는지 알지 못한다. 나는 많은 수정을하고있다. 그러나 나는 그것을 얻을 수 없다.SQL 복잡한 트리 행
DROP FUNCTION IF EXISTS album_tree_connect;
DELIMITER $$
CREATE FUNCTION album_tree_connect(value varchar(32)) RETURNS INT
NOT DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE _id varchar(32);
DECLARE _parent varchar(32);
DECLARE _next INT;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET @id = NULL;
SET _parent = @id;
SET _id = -1;
IF @id IS NULL THEN
RETURN NULL;
END IF;
LOOP
SELECT MIN(album_id)
INTO @id
FROM album
WHERE sub_album_of_album_id = _parent
AND album_id > _id;
IF @id IS NOT NULL OR _parent = @start_with THEN
SET @level = @level + 1;
RETURN @id;
END IF;
SET @level := @level - 1;
SELECT album_id, sub_album_of_album_id
INTO _id, _parent
FROM album
WHERE album_id = _parent;
END LOOP;
END
$$
DELIMITER ;
## select statement to pull the tree menu
SELECT CONCAT(REPEAT(' ', level - 1), CAST(hi.album_id AS CHAR)) AS treeitem, sub_album_of_album_id, name, user_id, level
FROM (
SELECT album_tree_connect(album_id) AS id, @level AS level
FROM (
SELECT @start_with := 0,
@id := @start_with,
@level := 0
) vars, album
WHERE @id IS NOT NULL
) ho
JOIN album hi
ON hi.album_id = ho.id
where user_id = 2
나는 시험해 보았다.하지만 슬프게도 didnt는 일한다. 당신은 그것을 시험해보고, 말해 줄 수있다. .. 당신이 원한다면 나는 당신에게 빠른 SQL 덤프를 줄 수있다. – Basit