2011-11-16 5 views
0

다른 사람으로부터 상속 된 프로젝트에서 'categories'라는 MYSQL 테이블이 있습니다.MYSQL 결과의 테이블에서 상위 카테고리 이름 검색

id   parent_id  name 
1   NULL   Travel 
2   NULL   Sleep 
3   NULL   Eat 
4   NULL   Bath 
5   1    Prams 
6   1    Travel Systems 
7   2    Cots 
8   3    High Chairs 

표는 분명히 그보다 훨씬 큽니다. 그러나 당신은 일반적인 생각을 가지고 있습니다. 나는이 테이블을 다른 카테고리, 브랜드 및 제품 테이블과 함께 가져 오는 MYSQL 문을 가지고 있지만 기본적으로 위의 테이블에서 부모 범주 이름을 문에 하위 범주와 함께 나열하려고합니다. 어떻게해야합니까?

SELECT brands.name, products.name, categories.id, categories.name, brands.id, 
FROM `products` , `brands` , `categories` 
WHERE products.brand_id = brands.id 
AND products.category_id = categories.id 
AND brands.name = '$brand' 
ORDER BY categories.name, products.name 

가 어떻게 결과에서 상위 카테고리 이름을 검색 않습니다

나의 현재 문은 뭔가처럼? 예를 들어 제품이 Pram 인 경우 어떻게 "여행"을 출력 할 수 있습니까? 루프에서 별도의 MYSQL 문을 수행 할 수 있지만 이것을 피하고 싶습니다. 이것은 바보 같은 간단한 질문입니다 (이 경우 나는 뇌사에 대해 사과합니다) 아니면 좀 더 복잡합니다! 감사.

SELECT name FROM categories WHERE id = (SELECT pid FROM categories WHERE name = $brand) 

편집 :

답변

1

먼저 당신이 이런 식으로 하위 쿼리를 사용할 수, 해당 ID의 이름을 얻을 후 현재 범주의 부모 ID를 알고 필요 당신이 범주를 얻을 필요가 있기 때문에 주어진 하위 카테고리 ID에 대해 동일한 행의 하위 카테고리 이름을 찾으려면 다음을 입력하십시오.

SELECT sc.name AS subcategory, c.name AS category 
FROM categories sc 
LEFT JOIN categories c ON c.id = sc.parent 
WHERE sc.id = $subcategory_id 
+0

감사합니다. 나열된 각 제품의 parent_id와 하위 카테고리 이름을 알고 있습니다. 하위 카테고리와 함께 나열된 각 제품의 상위 카테고리를 나열하고 싶습니다. 범주 이름을 검색하는 위의 쿼리 내에서 syb 쿼리를 수행 할 수있는 방법이 있습니까 (예 : category.name from category.parent_id = category.id) – iagdotme

+0

그 다음 다른 질문입니다. 위의 새 응답을 참조하십시오. – Flupkear

+0

설명하기가 어렵습니다. 범주 테이블에는 동일한 테이블에 범주와 하위 범주가 있습니다. 예를 들어 처음 4 개는 "상위 카테고리"(부모 ID는 NULL로 설정 됨)이고 나머지는 "하위 카테고리"입니다. 따라서 상위 ID가 "3"이므로 상위 카테고리의 "높은 의자"는 "Eat"입니다. 솔직하게 말해서 나는 테이블의 구조가 싫어서 내 인생을 어렵게 만들고 있습니다! – iagdotme

관련 문제