2016-12-23 2 views
1

Я создаю пользовательскую страницу PHP для моего проекта WordPress. Мой проект посвящен информации о событиях. Поэтому я создаю страницу для поиска событий на основе диапазона дат.WordPress Manual SELECT MySQL на основе значения столбца postmeta

таблица событий

post_id | title  | 
25  | Marathon Run | 

PostMeta стол

meta_id | post_id | meta_key | meta_value 
1  | 25  | StartDate | 2016-12-25 00:00 
2  | 25  | EndDate | 2016-12-26 00:00 

WordPress хранит данные в комплексе, как и выше таблиц. «StartDate» и «EndDate» сохраняются как значение в столбце meta_key, а фактическое значение «StartDate» и «EndDate» хранится в столбце meta_value.

мне трудно фильтровать, как обычную структуру Я всегда работаю на, например:

SELECT * FROM events WHERE startdate <= $startdate AND enddate >= $enddate 

Как написать заявление MySQL для фильтрации диапазон дат для такого рода структуры? Спасибо

ответ

0

Похоже, вам нужно присоединиться к таблице событий (post_id), а затем фильтровать мета-ключ (для StartDate и EndDate), а затем проверить, находится ли он в правильном диапазоне.

См. Ниже;

SELECT * FROM events JOIN postmeta ON events.post_id = postmeta.post_id WHERE (meta_key = 'StartDate' AND meta_value <= $startdate) AND (meta_key = 'EndDate' AND meta_value >= $enddate) 
+0

meta_key находится в таблице postmeta, а события находятся в другой таблице. –

+0

Просьба привести примеры схем для каждой из приведенных таблиц. – Garbit

+0

Попробуйте, я добавил заявление о соединении, чтобы вы могли выбрать события и данные постмета. – Garbit

Смежные вопросы