Я пытаюсь выполнить запрос для обновления значения настраиваемого поля в таблице WordPress wp_postmeta. Данные выглядят так:
meta_id post_id meta_key meta_value
------- ------- ------- ----------
1 1 start_date 2011-12-30
2 1 start_time 21:00
3 363 start_date 2011-12-29
4 363 start_time 21:00
5 363 _start_timestamp 2011-12-29 21:00
Я хотел бы сделать запрос для добавления записи со значением meta_key
_start_timestamp
, которое объединяет значения start_date
и start_time
для данного post_id, но только в тех случаях, когда _start_timestamp
еще не был установлен.
Прежде чем перейти к запросу INSERT, я попытался получить запрос SELECT, который показал бы то, что я хотел. Мне удалось сделать запрос SELECT, который возвращает идентификаторы записей, которые имеют _start_timestamp
, но не могу понять, как получить те, для которых он не определен.
Вот что у меня есть:
SELECT
a.post_id,
CONCAT(a.meta_value, ' ', b.meta_value),
c.meta_value
FROM
wp_postmeta a
INNER JOIN wp_postmeta b ON a.post_id=b.post_id
INNER JOIN wp_postmeta c ON a.post_id=c.post_id
WHERE
a.meta_key = 'start_date'
AND b.meta_key = 'start_time'
AND c.meta_key='_start_eventtimestamp'
Это возвращает
post_id CONCAT(a.meta_value, ' ', b.meta_value) meta_value
363 2011-12-29 21:00 2011-12-29 21:00
Как я могу указать, чтобы получать результаты, только если _start_timestamp
отсутствует в столбце meta_key
для данного post_id
? В этом случае он должен возвращать только post_id
1.