Я пытаюсь создать пользовательский запрос для получения сообщений (они действительно являются продуктами) из wordpress, где не имеют мета-запроса с именем 'custom_code'. Пытаюсь:выберите ... где не существует
SELECT DISTINCT p.ID
FROM
wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE
p.post_type = 'product'
AND (p.post_status = 'publish' OR p.post_status = 'draft')
AND pm.meta_key = 'custom_code' AND pm.meta_key IS NULL
Я попытался с NOT EXISTS, но SQL возвращает ошибку:
SELECT DISTINCT p.ID
FROM
wp_posts p
LEFT JOIN wp_postmeta pm ON p.ID = pm.post_id
WHERE
p.post_type = 'product'
AND (p.post_status = 'publish' OR p.post_status = 'draft')
AND NOT EXISTS (
select * from wp_postmeta as pm2
where pm2.meta_key = 'custom_code'
)
ПРИМЕЧАНИЕ: Мне нужно получить такие сообщения со статусом «публиковать» как должности со статусом «черновик ».
ОШИБКА возвращается:
слова непризнанного. (Рядом с "NOT", в позиции 193)
Ключевое слово непризнанное. (Рядом с "EXISTS", в позиции 197)
Символ (токен) неожиданно. (Near «(» в положении 204)
ТОК POINT
я сделал с WordPress API, и это работает, но мне нужно, чтобы добавить LEFT JOIN также получить продукты с именем, как имя каждого . продукт, возвращаемый предложения ниже Это предложение:
$args = array(
'posts_per_page' => -1,
'post_type' =>'product',
'post_status' => 'publish,draft',
'meta_query' => array(
array(
'key' => 'custom_code',
'compare' => 'NOT EXISTS'
)),
);
$posts_array = get_posts($args);
Любая помощь заранее спасибо
Изменить ГДЕ К И. Измените окончательный AND на WHERE. – Strawberry
Ну meta_key не может быть и «custom_code» * AND * NULL. Вы должны добавить сообщение об ошибке, которое вы наблюдаете. –
Я отредактировал мое сообщение. –