2013-02-22 2 views
0

나는 그 기초가 : http://sqlfiddle.com/#!2/e5a24/2이며 WordPress 기본 스키마의 약자입니다. 나는이 예에서 필요하지 않은 필드를 잘라 냈습니다.MySQL | 구별 된 레코드 선택

결과에서 볼 수 있듯이 "Category 1"의 2 배입니다. 내가하고 싶은 것은 "카테고리 1"의 최신 인스턴스 만 가져 오는 것입니다.

그 SQL에 대한 올바른 결과는 다음

POSTID POSTTITLE CATEGORYID CATEGORYNAME DATE 
-------------------------------------------------------------- 
2 2st Game 2 Category 2 January, 01 2013 00:00:00+0000 
3 1st Game 1 Category 1 January, 15 2013 00:00:00+0000 

내가했다 "카테고리 ID"에 의해 그룹을 시도하지만 결과에 카테고리 1의 한 인스턴스를 얻을 때, 나는 오래된 하나를 얻을 "카테고리 1"에 속하는 가장 초기의 기록이 아닙니다.

그 점에 대해 궁금하고 어떻게 해결할 수 있습니까?

+0

당신은 확신 SQL 피들이 쿼리를 올바르게 처리하고 있습니까? – Miguelo

답변

4
SELECT a.ID AS PostID, 
     a.post_title AS PostTitle, 
     c.meta_value AS CategoryID, 
     d.name AS CategoryName, 
     a.post_date AS Date 
FROM wp_posts a 
     INNER JOIN 
     (
      SELECT post_title, MAX(post_date) max_date 
      FROM wp_posts 
      GROUP BY post_title 
     ) b ON a.post_title = b.post_title AND 
       a.post_date = b.max_date 
     INNER JOIN wp_postmeta c 
      ON a.ID = c.post_ID 
     INNER JOIN wp_terms d 
      ON c.meta_value = d.term_ID 
WHERE c.meta_key = 'matchdayTeamsCategory' 
+1

게시물 제목이 동일하다고 가정합니다. 게시물 카테고리에 그룹화하지 않는 이유는 무엇입니까? –

+0

SQL Fiddle에서 제대로 작동하지만 내 실제 데이터가 올바르지 않습니다. 내 실제 데이터에서 두 개의 레코드 만 반환하고 내 결과를 PostTitle로 그룹화하는 것 같습니다. 나는 진짜로 그것의 문제를 안다 : (.) ​​어쨌든 당신의 응답을 위해 @ JW에게 고마워. :) –

2

당신이 얻을 수 날짜 DESC로

+0

예제를 제공해 주시겠습니까? –

+0

이것만으로도'postid'에서 이상한 결과가 나올 수 있습니다. 예를 들어, MySQL이 'GROUP BY'를 처리하고'SELECT'에 여분의 열을 넣었을 때 –

+0

올바른 것이므로 다른 답변 . –

2

사용 순서하여 그룹 MIN (날짜)를 사용해야 "카테고리 1"최신

+1

그거 작동하지 않는다;) –