좋아 I는 다음과 같습니다 테이블라는 범주 그래서 :MYSQL 반환 부모 및 자녀
id name parent_id
1 camera null
2 computer null
3 digital 1
4 gps null
5 laptop 2
내가 컴퓨터를 복원 할 수 있도록하려면를 -> 노트북이나 카메라 - 나는 쿼리> 디지털 ID = 3 또는 5
아이디어가 있으십니까?
좋아 I는 다음과 같습니다 테이블라는 범주 그래서 :MYSQL 반환 부모 및 자녀
id name parent_id
1 camera null
2 computer null
3 digital 1
4 gps null
5 laptop 2
내가 컴퓨터를 복원 할 수 있도록하려면를 -> 노트북이나 카메라 - 나는 쿼리> 디지털 ID = 3 또는 5
아이디어가 있으십니까?
자체를 사용하여 왼쪽 조인 쿼리 위
select a.name, b.name as parent_name from categories a left join categories b on a.parent_id = b.id where a.id in (3,5);
가 한 레벨을 얻기를위한 유효을 부모의 전체 혈통을 훑어보고 싶다면 다음 링크를 참조하십시오.
내 모든 CS 강의가 다시 범람하는해당 Structurs에는 Nestedsets을 시도하십시오. 선택하기에 매우 좋은 성능을 가지고 있지만, 불량 쓰기 성능. 따라서 테이블에 삽입 또는 업데이트 (구조 업데이트)를 선택하면 중첩 된 집합을 사용하는 것이 좋습니다. > 하위 - - 중첩와
Breadcrumps 카테고리 1을 얻기 위해 설정>는 열 수를 고정 않다면 하위 카테고리
결과
select p.name, c.name
mytable c, mytable p
where c.parent_id = p.id
and c.id in (3,5)
을 설정 어떻게 사용하려고하는 것은 안티 패턴이다. 계속 사용하면 하위 카테고리의 전체 트리를 선택하려는 경우 몇 가지 문제가 발생할 수 있습니다. 적절한 패턴에 대한 테이크의 대답을보십시오.
select t2.name + "->" + t1.name
from categories t1
inner join t2 on t1.id = t2.parent_id
where t1.id in (3, 5)
당신은 단지 부모의 한 단계가있는 경우 - 자식 참조 :
SELECT IF(p.name IS NOT NULL, p.name + " -> " + a.name, a.name) AS name
FROM categories a
LEFT JOIN categories p ON a.parent_id = p.id
: 그들은 가로 지르는 나무 아래 몇 가지 표준 방법을 나열했습니다! 구조가 2 개 이상의 레벨을 포함한다고 결정하면이를 올바르게 읽고 구현할 수 있습니다. 감사 – nick