2010-12-30 8 views
2

누군가가 MySQL (v5.0.51) 쿼리에 도움이 될지 궁금합니다. 이 같은 테이블이 있습니다MySQL 쿼리에 대한 도움말

하위 범주 열에서 NULL와 각 항목은 최상위 범주와이 하위 범주에 속하는 최상위 카테고리 알려주는 하위 범주의 값을 나타냅니다
category_id | category_text | subcategory 
25   | Motor Controls | NULL 
26   | Contactors  | 25 
27   | Overloads  | 25 
28   | Motors   | NULL 
29   | Accessories | 28 

. 접촉기 및 각 하위 모터 지금

컨트롤 I 저장하는 PRODUCTS 테이블에이 값을 이용 CATEGORY_ID (25)는 25의 값을 갖기 때문에 과부하는 모터 제어에 속한다 : 위 예

여기에서는 하위 카테고리의 category_id 만 저장합니다.

product_id | product_item | product_supplier_id | product_description | product_category_id 
24   | Product A | 39     | Product A description | 27 --category_id of subcategory (ie.Overloads) 
25   | Product B | 39     | Product B description | 26 --(Contactors) 

오전 데 문제는 내가 (다른 사람의 사이에서) PRODUCTS 테이블을 조회 할 수 있습니다 하나 SQL 쿼리를 필요 범주와 하위 범주 BOTH를 가지고 있다는 것입니다. 나는 둘 중 하나를 위해 그것을 할 수 있지만 둘 다 할 수는 없다. 나는 UNION, JOINS 등을 시도했지만 그것을 얻지 못하는 것 같습니다. 이것은 내가 지금까지 하위 범주를 가져 오는 것입니다.

SELECT p.*, c.company_name, pc.category_text AS subcategory 
FROM products p, company c, product_categories pc 
WHERE p.product_supplier_id = c.company_id 
AND p.product_category_id = pc.category_id 

결과가 아래와 같이 생성됩니다.

product_id | product_item | product_supplier_id | product_description | product_category_id | company_name  | subcategory 
24   | Product A | 39     | Product A description | 27     | Product A Supplier | Overloads 
25   | Product B | 39     | Product B description | 26     | Product B Supplier | Contactors 

기본적으로 내가 원하는 것은 내가 테이블이 생성되는 방식으로이 작업을 수행 할 수있는이

24 | Product A | 39 | Product A description | 27 | Product A Supplier | **Motor Controls** | Overloads 

처럼 보이는 각각의 하위 범주에 대한 올바른 최상위 범주를 포함하는 열을 추가하는 것입니다 또는 그것을 수정해야합니까?

미안 내가 이해하기 쉽도록 좋은 이미지가 있지만 미안하지만 "평판"이 1 인 경우 게시 할 수 없습니다.

도움을 주시면 감사하겠습니다. PHP에서 MySQL 데이터베이스에 액세스하기 위해 쿼리를 사용하고 있습니다.

감사

답변

1
SELECT p.*, 
       c.company_name, 
       pc.category_text AS subcategory 
       ppc.category_text AS category 
    FROM products p, 
       company c, 
       product_categories pc, 
       product_categories ppc 
WHERE p.product_supplier_id = c.company_id 
    AND p.product_category_id = pc.category_id 
    AND pc.subcategory = ppc.category_id 

P.S : 나는 MySQL은 (같은 오라클에 절하여 연결) 계층 적 데이터를 쿼리하는

+0

감사를 더 나은 지원이 있었으면 좋겠다! 그것은 완벽하게 작동했습니다. 나는 그것이 필요한 것보다 더 복잡하게 만들었다 고 생각합니다 ... 모든 사람들이 해결책을 제시 할 때 그것을 말하는가? 다시 한 번 감사드립니다! – user558720

0
SELECT p.*, c.company_name, pc.category_text AS subcategory,ppc.category_text AS category 
    FROM products p 
    left join company c on p.product_supplier_id = c.company_id 
    left join product_categories pc on p.product_category_id = pc.category_id 
    left join product_categories ppc on pc.subcategory = ppc.category_id 
+0

기록을 위해서도 이것도 효과가있었습니다. 그것은 나를 배울 수있는 대안을 제공합니다. 감사! – user558720