我有一个事件表,所有事件都有一个事件开始日期。我想要做的是创建一个事件存档并显示所有已经过去的事件。
现在由于某种原因,我可以获得尚未通过的事件的结果,但是当我尝试选择旧事件时,我得到一个空结果。
这是我的问题:
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是一个日期类型,如果这有任何区别。有什么想法吗?
答案 0 :(得分:0)
首先,您应该尝试使用INNER JOIN而不是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&lt;的行?现在()?检查一下。只需删除该语句,执行以下操作:
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
你得到任何结果吗?