2012-01-06 3 views
0

중첩 된 서브 쿼리에 주목하십시오. JOIN을 사용하여이 작업을 수행하는 더 좋은 방법이 있다는 것을 알고 있습니다. 나는 그것을 파악할 전문 지식이 없습니다.MySQL : JOIN 전문 기술 필요

SELECT DISTINCT pm.post_id 
FROM wp_3_postmeta pm 
WHERE pm.meta_key LIKE 'member_categories_%_member_categories_name' 
AND pm.meta_value IN(
    SELECT tt.term_taxonomy_id 
    FROM wp_3_term_taxonomy tt 
    WHERE tt.parent IN(
     SELECT tt.term_taxonomy_id 
     FROM wp_3_term_taxonomy tt 
     WHERE tt.parent = 33) 
    OR tt.parent = 33 
); 

도움 주셔서 감사합니다.

답변

1

이것은 당신이

SELECT DISTINCT pm.post_id 
FROM wp_3_postmeta pm 
    INNER JOIN wp_3_term_taxonomy tt ON pm.meta_value = tt.term_taxonomy_id 
    LEFT JOIN wp_3_term_taxonomy tt2 ON tt.parent = tt2.term_taxonomy_id 
WHERE pm.meta_key LIKE 'member_categories_%_member_categories_name' 
    AND (tt.parent = 33 OR tt2.parent = 33) 
+0

완벽! 감사. – lancemonotone

+0

기꺼이 도와 드리겠습니다. –

0

나는 이것이 당신이 원하는 것 무엇을 얻을해야한다고 생각의 트릭을 수행해야합니다

SELECT DISTINCT pm.post_id 
FROM wp_3_postmeta pm 
JOIN wp_3_term_taxonomy tt 
    ON tt.term_taxonomy_id = pm.meta_value 
LEFT JOIN wp_3_term_taxonomy t2 
    ON t2.term_taxonomy_id = tt.parent 
WHERE pm.meta_key LIKE 'member_categories_%_member_categories_name' 
    AND (t2.parent = 33 OR tt.parent = 33)