2011-09-06 5 views
0

나는이 테이블을 가지고있다.mysql, 테이블에서 모두 선택

나는 cat id = 4와 그 고양이 부모 id가 같은 다른 모든 행을 선택하고 싶다. 예 : 나는 고양이 아이디 넷에서 모든 범주를 원하는 경우, 그것은 고양이 IDS 4 (자체), 2에 결과를해야하며, 1

+-------------------------------+ 
| id | catname | catparentid | 
+-------------------------------+ 
|1  | home  | 0  | 
|2  | products | 1  | 
|3  | men  | 2  | 
|4  | women | 2  | 
|5  | shirts | 3  | 
|6  | outdoor | 0  | 
+-------------------------------+ 

내가 시도 :

SELECT * FROM categories c 
where c.id = 4 
c.catparentid IN (SELECT id FROM categories) 

을하지만 모든납니다. 노조를해야합니까?

+1

원하는 깊이는 무엇입니까? 재귀 적으로 일치하는 것을 찾거나 2-3 레벨 아래로 찾아야합니다 ... –

+0

이 기사는 유용한 정보를 제공합니다 : [MySQL의 계층 적 데이터 관리] (http : //www.vbmysql. com/articles/database-design/managing-hierarchical-data-in-mysql) – Mat

+0

은 0이 될 때까지 가능합니다. –

답변

0
SELECT * 
FROM categories c 
INNER JOIN (SELECT catparentid FROM categories where id = 4) a 
ON c.catparentid = a.catparentid 
+0

이 작업을 시도했으나 작동하지 않습니다. –

+0

이제 재귀 적 솔루션이 필요합니다. 내 검색어가 제대로 작동하지 않습니다. – curlingdude

0

당신이 원하는 노조의 수 (나무의 깊이)를 모르기 때문에 조합이 도움이되지 않습니다.

최신 SQL 표준은 임시 클로저의 계산을 지원합니다. WITH을 사용하는 것이 좋겠지 만 현재 SQL Server에서 지원되는 사용 가능한 크기를 알지 못합니다.

관련 문제