2011-10-06 7 views
0

나는 매우 복잡한 데이터베이스 질문을하므로 가능한 자세히 설명하도록 노력해야한다.MySQL 루프 반복 쿼리/파고

하나의 테이블에 TypeAttributes가 있습니다. 이 표에서

유형 ID,의 AttributeId, valueINT

나는 6 속성 ID의 세트로 특정 유형을 추출하고 싶습니다.

그래서, 난 다시 위의 쿼리를 실행하려면이 정보에서

typeID, attributeID, valueINT 
11446 182   3000  
11446 183   3001  
11446 184   3002  
11446 277   5   
11446 278   2   
11446 279   2   

유형 ID = 11446 아래의 경우, 유형 ID 검색 쿼리에서이 같은 결과가 발생 할 그러나 queryID에 대한 typeID로 attributeID의 182, 183 및 184의 valueINT를 사용합니다. 그래서, 나는이 같은 테이블 표정으로 끝나야합니다 : 제가 가지고 기대하고있어 필수 유형 ID 년대의 전부입니다, 결국

typeID, attributeID, valueINT 
11446 182   3000  
11446 183   3001  
11446 184   3002  
11446 277   5   
11446 278   2   
11446 279   2   
3000 182   1000  
3000 183   1001 
3000 277   5 
3000 278   5 
3001 182   51951 
3001 277   3 
3002 182   1000 
3002 277   2 

, 실제로 속성의 유형입니다 (182 개) 속성 값 (메신저에 관심이있다), 보조 속성 (277)을 따라

이 데이터를 통해 한 가지 항목 유형에서 단순히 정보 계층 구조를 만들 수 있습니다. IE. 아이템 유형 11446을 선택하고, 필요 조건이 없어 질 때까지 나무를 계속 통과합니다.

이 테이블을 출력하기 위해 SQL로 전체적으로 수행 할 수 있습니까?

나는 이것이 누군가에게 이해되기를 바랍니다.

친절한 대답

추신.

부수적으로, 속성 ID는보고있는 속성의 종류가 무엇인지 알려주는 다른 테이블에 연결되어 있으며,이 경우 valueINT는 실제로 다른 유형 ID입니다. 똑같은 과정.

182, 183 및 184는 특정 유형이며 277, 278 및 279 및 이러한 유형의 승수입니다.

답변

0

modified preorder traversal이라는 메소드를 사용하여 트리 구조화 된 데이터를 저장하는 방법을 고려하십시오.이 방법을 사용하면 단일 쿼리에서 특정 노드의 하위 노드가 모든 깊이를 쉽게 찾을 수 있습니다.

특정 특성으로 정의 된 여러 개의 트리가있는 것 같습니다. 이러한 각 속성은 왼쪽 및 오른쪽 노드 식별자를 저장하기 위해 한 쌍의 값으로 대체됩니다.