2012-02-12 2 views
1

내 데이터를 WordPress로 옮기기 전에 그렇게 열심히 아니었지만 같은 결과를 얻는 방법이 확실하지 않았습니다. 게시물은 기사와 함께 (잡지 문제와 같이) 수동으로 주문됩니다. 나는 최신호에서 모든 기사를 얻고 다른 분야에 따라 주문하고 싶다. 나의 오래된 테이블MySQL (및 WordPress) : 하나의 열에서 가장 높은 값을 포함하는 행을 선택하고 다른 열로 정렬

내가 워드 프레스와

select title, issue, num 
from magazine 
where issue = (
select max(issue) 
from magazine 
) 
order by num 

을 할 수있는 데이터는 두 개의 테이블, 포스트 (글)에 대한 하나의 메타 데이터에 대한 또 다른로 분할된다.

나는 다음과 같은 쿼리 최신 문제의 모든 기사를 얻을 수 있습니다 :

select post_title, post_date from wp_posts 
where ID in (select post_id 
      from wp_postmeta 
      where meta_key = 'myissue' and meta_value = (select max(meta_value + 0) 
                  from wp_postmeta 
                  where meta_key = 'myissue')); 

질문은 : 어떻게 다른 사용자 정의 필드에 의한 결과를 주문합니까를?

+0

무엇 당신에 의해 주문하려는 필드? – piotrm

답변

1

나는 해결책을 발견했습니다

select post_title, post_date, meta_value 
    from wp_posts, wp_postmeta 
    where ID in (
     select post_id 
      from wp_postmeta 
       where meta_key = 'myissue' 
       and meta_value = (
        select max(meta_value + 0) 
         from wp_postmeta 
          where meta_key = 'myissue' 
       ) 
     ) 
    and ID = post_id 
    and meta_key = 'myorder' 
    order by meta_value + 0; 
+0

위의 내용은 최신 문제 (최대 meta_key 'myissue')에만 국한되어 있습니다. 두 개의 meta_keys에서 전체 데이터베이스를 정렬하려면 어떻게해야합니까? 일반적으로, 나는'myissue, myorder' 명령을 사용합니다. 어떻게해야합니까? – and

+0

'선택 t3.post_title에서 O I (I는 $ wpdb-에서 을 POST_ID로 선택 meta_value> postmeta meta_key가 = 'myissue' ) T1로서는, O 등 ( 선택 meta_value이으로부터 을 POST_ID $ wpdb-> postmeta 여기서 T2로서 meta_key = 'myorder' ), T3 등 $ wpdb-> 여기서 포스트 t1.post_id = t2.post_id t2.post_id 및 ID = 위해 I + 0 DESC, 하여 o + 0 제한 20; ' – and

+0

나는 그것을 할 수 있다고 생각하지 않았다. 그러나 위의 코드는 빠른 해킹 일 뿐이며 전문가가 최적화 할 수 있다고 생각합니다. – and

1

쿼리가 많은 결과를 반환하지 않으면 가장 쉬운 방법은 임시 테이블을 사용하는 것입니다. 쿼리는이 같은 것입니다 :

SELECT * FROM (
select post_title, post_date from wp_posts 
where ID in (select post_id 
      from wp_postmeta 
      where meta_key = 'myissue' and meta_value = (select max(meta_value + 0) 
                  from wp_postmeta 
                  where meta_key = 'myissue')) 
) tmptbl ORDER BY post_date DESC; 
관련 문제