2016-07-01 3 views
0
이 같은 워드 프레스 데이터베이스에서 metakey 값을 선택하려고

:이 코드는 그것을 제외하고는 완벽하게 잘 작동 선택 metakey 값 (두 테이블)

global $wpdb; 

$r = $wpdb->get_col($wpdb->prepare(" 
    SELECT meta_value FROM {$wpdb->postmeta} 
    WHERE meta_key = 'cast' 
")); 

이 게시되지 않은에 대한 결과를 보여주고있다 게시물뿐만 아니라. 저 이유를 위해 나는 "간행하는"것과 같이 표시되는 포스트 테이블에서 aditional 매개 변수를 추가하는 것을 시도했다. 이런 식으로 데이터베이스를 쿼리하려고 시도했지만 작동하지 않습니다.

$r = $wpdb->get_col($wpdb->prepare(" 

     SELECT wp_postmeta.meta_value 
     FROM wp_postmeta 
     LEFT JOIN wp_posts 
     ON wp_postmeta.post_id = wp_posts.ID 
     WHERE wp_postmeta.meta_key = 'cast' AND wp_posts.post_status ='publish' 


")); 
+0

: 그래서, 대답을 찾고 다른 사람들을 위해 여기서 일하는 내 코드입니다. 그것은'WHERE' 절에 포함시킴으로써 LEFT JOIN을 내부 결합으로 변환합니다. – Siyual

+0

wp_postmeta.post_id = wp_posts.ID AND wp_posts.post_status = '게시' 어디 wp_postmeta.meta_key = '캐스트'하지만 여전히 작동하지 않습니다. –

+1

@Siyual 나는 그가 "출판 된"결과만을 원한다고 말하기 때문에 그가 원하고 생각하는 것보다 내 생각에 ... – Matt

답변

1

나는 내 자신으로 답을 발견했습니다. 나는 그것이 최선의 해결책인지는 모르겠지만 내가 필요한 것을 성취한다.

global $wpdb; 

     $r = $wpdb->get_col(" 

      SELECT key1.meta_value 
      FROM $wpdb->postmeta key1 
      INNER JOIN $wpdb->posts key2 
      ON key1.post_id = key2.ID 
      AND key2.post_status ='publish' 
      WHERE key1.meta_key = 'cast' 

     "); 
당신의`LEFT JOIN`에 대한 귀하의`ON` 절에`AND wp_posts.post_status = 'publish'` 섹션을 이동
관련 문제