CREATE TABLE t_hierarchy (
id int(10) unsigned NOT NULL AUTO_INCREMENT,
parent int(10) unsigned NOT NULL,
PRIMARY KEY (id),
KEY ix_hierarchy_parent (parent, id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
DELIMITER $$
CREATE PROCEDURE prc_fill_hierarchy (level INT, fill INT)
BEGIN
DECLARE _level INT;
DECLARE _fill INT;
INSERT
INTO t_hierarchy (id, parent)
VALUES (1, 0);
SET _fill = 0;
WHILE _fill < fill DO
INSERT
INTO t_hierarchy (parent)
VALUES (1);
SET _fill = _fill + 1;
END WHILE;
SET _fill = 1;
SET _level = 0;
WHILE _level < level DO
INSERT
INTO t_hierarchy (parent)
SELECT hn.id
FROM t_hierarchy ho, t_hierarchy hn
WHERE ho.parent = 1
AND hn.id > _fill;
SET _level = _level + 1;
SET _fill = _fill + POWER(fill, _level);
END WHILE;
END
$$
DELIMITER ;
DROP FUNCTION IF EXISTS hierarchy_connect_by_parent_eq_prior_id;
DELIMITER $$
CREATE FUNCTION hierarchy_connect_by_parent_eq_prior_id(value INT) RETURNS INT
NOT DETERMINISTIC
READS SQL DATA
BEGIN
DECLARE _id INT;
DECLARE _parent INT;
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(id)
INTO @id
FROM t_hierarchy
WHERE parent = _parent
AND 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 id, parent
INTO _id, _parent
FROM t_hierarchy
WHERE id = _parent;
END LOOP;
END
$$
DELIMITER ;
START TRANSACTION;
CALL prc_fill_hierarchy(6, 5);
COMMIT;SELECT @r AS _id, ( SELECT @r := parent FROM t_hierarchy WHERE id = _id ) AS parent, @l := @l + 1 AS lvl FROM ( SELECT @r := 1218, @l := 0, @cl := 0 ) vars, t_hierarchy h WHERE @r <> 0mysql 책 사서 봐야겠습니다...ㅠㅠ 이거 명확하게 설명해주실 분... ;ㅅ;
댓글 6개
13년 전
오~ 지도 책봐야 겠음다 ㅠ
13년 전
이런 거는 그림을 보게는 좋죠.
똥싼너구리
13년 전
그냥 데이터베이스 레코드를 트리구조로 저장하고 출력하고 하는거 같네요..
그걸 재귀함수로 만든거겠죠..
데이터 양이 많지 않다면..
그냥 다 불러들여서 PHP에서 하는게 훨씬 효율적일 겁니다.
전 이런구조는 메뉴나 카테고리에 쓰기때문에..
그냥 다 불러서 PHP에서 정렬하는게 훨씬 효율적이더라구요..
어차피 모든 레코드는 다 불러 들여야 할 상황이니..
데이터 양이 많고..
그중에 일부분만 불러내야 한다면 좀 틀리겠네요..
그걸 재귀함수로 만든거겠죠..
데이터 양이 많지 않다면..
그냥 다 불러들여서 PHP에서 하는게 훨씬 효율적일 겁니다.
전 이런구조는 메뉴나 카테고리에 쓰기때문에..
그냥 다 불러서 PHP에서 정렬하는게 훨씬 효율적이더라구요..
어차피 모든 레코드는 다 불러 들여야 할 상황이니..
데이터 양이 많고..
그중에 일부분만 불러내야 한다면 좀 틀리겠네요..
13년 전
오라클에서 START WITH~ CONNECT BY PRIOR~ 라는 유용한 함수가 있다길래 mysql에서는 가능할까 해서 검색해봐서 나온 결과인데요. 조직도에서 사용해보려고 했는데... 어렵네요 ㅠㅠ
13년 전
http://explainextended.com/2009/03/17/hierarchical-queries-in-mysql/
13년 전
네 해당 페이지 내용 맞습니다..ㅠㅠ
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 7930 | 9년 전 | 468 | ||
| 7929 | 9년 전 | 407 | ||
| 7928 | 9년 전 | 479 | ||
| 7927 | 9년 전 | 382 | ||
| 7926 | 9년 전 | 694 | ||
| 7925 | 9년 전 | 416 | ||
| 7924 | 9년 전 | 402 | ||
| 7923 | 9년 전 | 388 | ||
| 7922 | 9년 전 | 418 | ||
| 7921 | 9년 전 | 434 | ||
| 7920 | 9년 전 | 344 | ||
| 7919 | 9년 전 | 354 | ||
| 7918 | 9년 전 | 509 | ||
| 7917 | 9년 전 | 363 | ||
| 7916 | 9년 전 | 450 | ||
| 7915 | 9년 전 | 461 | ||
| 7914 | 9년 전 | 472 | ||
| 7913 | 9년 전 | 648 | ||
| 7912 | 9년 전 | 477 | ||
| 7911 | 9년 전 | 401 | ||
| 7910 | 9년 전 | 458 | ||
| 7909 | 9년 전 | 571 | ||
| 7908 | 9년 전 | 508 | ||
| 7907 | 9년 전 | 436 | ||
| 7906 | 9년 전 | 462 | ||
| 7905 | 9년 전 | 433 | ||
| 7904 | 9년 전 | 417 | ||
| 7903 | 9년 전 | 429 | ||
| 7902 | 9년 전 | 599 | ||
| 7901 |
|
9년 전 | 770 | |
| 7900 | 9년 전 | 663 | ||
| 7899 | 9년 전 | 442 | ||
| 7898 | 9년 전 | 443 | ||
| 7897 | 9년 전 | 403 | ||
| 7896 | 9년 전 | 418 | ||
| 7895 | 9년 전 | 538 | ||
| 7894 | 9년 전 | 441 | ||
| 7893 | 9년 전 | 424 | ||
| 7892 | 9년 전 | 458 | ||
| 7891 | 9년 전 | 816 | ||
| 7890 | 9년 전 | 1233 | ||
| 7889 | 9년 전 | 770 | ||
| 7888 |
limsy1987
|
9년 전 | 580 | |
| 7887 | 9년 전 | 632 | ||
| 7886 | 9년 전 | 515 | ||
| 7885 | 9년 전 | 486 | ||
| 7884 | 9년 전 | 478 | ||
| 7883 | 9년 전 | 490 | ||
| 7882 | 9년 전 | 545 | ||
| 7881 | 9년 전 | 522 | ||
| 7880 | 9년 전 | 633 | ||
| 7879 | 9년 전 | 520 | ||
| 7878 | 9년 전 | 1296 | ||
| 7877 | 9년 전 | 819 | ||
| 7876 | 9년 전 | 564 | ||
| 7875 | 9년 전 | 632 | ||
| 7874 |
|
9년 전 | 833 | |
| 7873 | 9년 전 | 558 | ||
| 7872 | 9년 전 | 728 | ||
| 7871 | 9년 전 | 544 | ||
| 7870 | 9년 전 | 661 | ||
| 7869 | 9년 전 | 476 | ||
| 7868 | 9년 전 | 519 | ||
| 7867 | 9년 전 | 528 | ||
| 7866 | 9년 전 | 582 | ||
| 7865 | 9년 전 | 528 | ||
| 7864 | 10년 전 | 582 | ||
| 7863 | 10년 전 | 575 | ||
| 7862 | 10년 전 | 536 | ||
| 7861 | 10년 전 | 705 | ||
| 7860 | 10년 전 | 686 | ||
| 7859 | 10년 전 | 454 | ||
| 7858 | 10년 전 | 774 | ||
| 7857 | 10년 전 | 1157 | ||
| 7856 | 10년 전 | 580 | ||
| 7855 | 10년 전 | 820 | ||
| 7854 | 10년 전 | 756 | ||
| 7853 | 10년 전 | 656 | ||
| 7852 | 10년 전 | 576 | ||
| 7851 | 10년 전 | 583 | ||
| 7850 | 10년 전 | 651 | ||
| 7849 | 10년 전 | 414 | ||
| 7848 | 10년 전 | 478 | ||
| 7847 | 10년 전 | 730 | ||
| 7846 | 10년 전 | 506 | ||
| 7845 | 10년 전 | 488 | ||
| 7844 | 10년 전 | 444 | ||
| 7843 | 10년 전 | 488 | ||
| 7842 | 10년 전 | 467 | ||
| 7841 | 10년 전 | 434 | ||
| 7840 | 10년 전 | 451 | ||
| 7839 | 10년 전 | 513 | ||
| 7838 | 10년 전 | 558 | ||
| 7837 | 10년 전 | 393 | ||
| 7836 | 10년 전 | 446 | ||
| 7835 | 10년 전 | 529 | ||
| 7834 |
|
10년 전 | 1230 | |
| 7833 | 10년 전 | 496 | ||
| 7832 | 10년 전 | 469 | ||
| 7831 | 10년 전 | 635 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기