2014-02-06 2 views
0

희망, 좋은 해결책을 찾아내는 데 도움이 될 것입니다. 먼저 폴더 트리를 만들고 MYSQL 테이블에서 데이터를 가져와야합니다.열의 값과 다른 열의 값을 비교하십시오.

id parent_id name 
1 0   jackets 
2 0   sweaters 
3 1   men 
4 1   woomen 
5 0   trousers 
6 5   children 

이 값을 열 'ID'의 값을 비교하여 내가 현재 카테고리, 아이가 나 가지고 여부를 결정해야한다 (자바 스크립트 스타일)을 제대로 구축하기 위해 내 테이블의 단순화 된 구조는 categories라고 열 'parent_id'의 모든 행에서부터 동적 열 has_children이 있어야합니다.

출력은 다음과 같이되어야합니다 :

id parent_id name  has_children 
1 0   jackets true 
2 0   sweaters false 
3 1   men  false 
4 1   woomen false 
5 0   trousers true 
6 5   children false 
+0

규칙 상 고아를 나타 내기 위해 0이 아닌 NULL을 사용합니다. – Strawberry

+0

그렇다면 int()에서 string으로 유형을 변경해야합니다. ID에 숫자가 포함되어 있다는 점을 감안할 때 올바른 것입니까? 그럼에도 불구하고, 특히 비교 가치에 관한 나의 주된 문제와 비교할 때 큰 차이는 아닙니다. – Erik

+0

어, 안돼! – Strawberry

답변

0

당신은 당신이 T/F 플래그를 가질 수있는 선택 등을 추가 할 수 있습니다.

SELECT 
    p.id, p.nParentID,p.sTitle, 
    (SELECT COUNT(*) FROM pub.category c WHERE c.nParentId = p.id) AS nChildrenCount, 
    IF (SELECT COUNT(*) FROM pub.category c WHERE c.nParentId = p.id) , true, false) AS bHasChildren 
FROM pub.category p 

나는 분명히하기 위해 카운트도 포함 시켰습니다.

그러나 계단식 메뉴를 만들려는 경우이 플래그가 유용 할 수 있지만 실제로는 UI 관계형/미들웨어 측 재귀 함수가 필요하므로 멋진 관계형 개체로 메뉴를 빌드해야합니다. 이 플래그는 재귀 메뉴 작성기에서 사용할 수 있습니다.

+0

예, 감사합니다. 그것은 내가 원하는 것입니다. – Erik

+0

각 카테고리에는 1 개 이하의 하위 레벨이 있으므로, 실제 필요없이 지나치게 복잡하게 만들고 싶지는 않습니다. – Erik

관련 문제