2011-09-12 6 views
0

모든 이벤트 시작 날짜가있는 이벤트 테이블이 있습니다. 내가하고 싶은 일은 이벤트 아카이브를 만들고오고 나가는 모든 이벤트를 표시하는 것입니다.이 MySQL 쿼리가 과거 날짜로 결과를 반환하지 않는 이유는 무엇입니까?

지금 어떤 이유로 나는 아직 통과하지 못한 이벤트에 대한 결과를 얻을 수 있지만 이전 이벤트를 선택하려고하면 빈 결과가 나타납니다. 그 어떤 변화도 가져 오지면

SELECT wp_eventscalendar_main.eventTitle, wp_eventscalendar_main.eventDescription, wp_eventscalendar_main.eventStartDate, wp_eventscalendar_main.postID, wp_postmeta.post_id, wp_postmeta.meta_key, wp_postmeta.meta_value 
    FROM wp_eventscalendar_main, wp_postmeta 
    WHERE wp_eventscalendar_main.eventStartDate < NOW() AND wp_postmeta.post_id = wp_eventscalendar_main.postID AND wp_postmeta.meta_key = '_thumbnail_id' 
    ORDER BY wp_eventscalendar_main.eventStartDate ASC 
    LIMIT 10 

eventStartDate는 날짜 타입 :

여기 내 쿼리입니다. 어떤 아이디어?

+3

날짜 제한을 완전히 지우면 이전 이벤트가 표시됩니까? –

+2

코드에 문제가 없습니다. 먼저 한 문장으로 어디서부터 시작 했습니까? 결과를 반환하는지 확인하십시오. 그 다음 (post_id)를 추가하십시오. 마지막으로 결과를 확인한 다음 결과를 다시 확인한 다음 where (eventstartdate JonH

+0

나는 그것들을 해결했다. 당황하게하기 전에 기본으로 돌아가도록 상기시켜 주셔서 감사합니다! –

답변

0

먼저, CROSS JOINS이 아닌 내부 결합을 사용해야합니다. INNER JOIN 키워드를 사용하여이 작업을 수행 할 수 있습니다. 별칭을 사용하기 시작하는 것이 좋습니다. 더 읽기 쉽습니다. 그래서

, 이런 식으로 뭔가 : 이제

SELECT m.eventTitle, m.eventDescription, m.eventStartDate, m.postID, p.post_id, p.meta_key, p.meta_value 
FROM wp_eventscalendar_main m INNER JOIN wp_postmeta p 
ON (m.postID = p.post_id) 
WHERE m.eventStartDate < NOW() 
AND p.meta_key = '_thumbnail_id' 
ORDER BY m.eventStartDate ASC 
LIMIT 10 

, 당신은 지금 만족 행 eventStartDate <을해야합니까()? 그것을 확인하십시오. 그 문장을 그냥 지우고 다음과 같이하십시오.

SELECT m.eventTitle, m.eventDescription, m.eventStartDate, m.postID, p.post_id, p.meta_key, p.meta_value 
FROM wp_eventscalendar_main m INNER JOIN wp_postmeta p 
ON (m.postID = p.post_id) 
WHERE 
p.meta_key = '_thumbnail_id' 
ORDER BY m.eventStartDate ASC 
LIMIT 10 

결과가 있습니까?

관련 문제