2011-09-12 21 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

コードに問題はありません。最初に1つのステートメントでどこから始めてみましたか?結果を返すかどうかを確認します。次のものを追加します(post_id)。最後に結果を確認したら、結果を確認してからwhere(eventstartdate JonH

+0

私はそれを男から働いた。パニックになる前に基本に戻るように私に思い出させてくれてありがとう! –

答えて

0

まず、CROSS JOINSではなくINNER JOINを使用するようにしてください。これは、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 

は今、あなたは)(NOW 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 

結果が得られますか?

関連する問題