2011-12-29 5 views
0

나는이 튜토리얼 http://sqllessons.com/categories.html을 발견하고 나는 그것이 재귀 호출보다 더 나은로 설명 된 방법을 사용하고 싶지만 나는 두 가지 문제가 있습니다범주와 하위 범주

  1. 가 어떻게 가장 깊은 수준을 알 수 있습니까? 어떤 페이지에서는 2를 가질 수도 있고 또 다른 페이지에서 20을 가질 수도 있습니다. 뭔가 빠졌거나이 방법은 당신이 가장 깊은 레벨의 이전 런타임을 알고있는 경우에만 사용될 수 있습니다!


CREATE TABLE `categories` (
    `id` int(11) NOT NULL, 
    `position` int(11) DEFAULT NULL, 
    `parent_id` int(11) DEFAULT NULL, 
    PRIMARY KEY (`id`), 
    KEY `parent_id_fk` (`parent_id`), 
    CONSTRAINT `categories_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `categories` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

CREATE TABLE `categories_locale` (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 
    `slug` varchar(100) NOT NULL DEFAULT '', 
    `name` varchar(40) NOT NULL DEFAULT '', 
    `category_id` int(11) NOT NULL, 
    `locale_id` smallint(5) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

가 당신의 도움이 크게

을 감상 할 수있다 :
  • 는 제가 아래 내 테이블 디자인 작업을 쿼리를 변경하는 방법, 다국어 데이터베이스 디자인을 가지고있다.

  • +0

    해당 링크의 개요를 제공 할 수 있습니다. 조금 길기 때문에 대부분의 사람들은 질문에 대답하기 전에 그것을 읽지 않으려합니다. –

    +0

    데이터베이스에 완전히 코딩 된 솔루션을 찾고 계십니까? 또한 참조하는 자습서는 알려진 깊이로 가정하고 결과 세트의 열 수는이 깊이에 따라 다릅니다. 깊이가 알려지지 않은 경우 두 열의 부모/자식 ID 만 반환하고 소비 코드는 동적 깊이를 처리해야합니다. 당신이 찾고있는 것을 분명히 할 수 있다면, 나는 더 많은 것을 도울 수있을 것입니다. –

    답변

    0

    '중첩 세트'에 대해 조사하고 싶을 수 있습니다. 중첩 세트의 article은 시작하기 좋은 장소입니다. 또한 ORM (예 : doctrine)을 사용하는 경우 중첩 세트 기능이 지원됩니다.

    관련 문제