#php #sql
#php #sql
Вопрос:
в конце этого я хочу отобразить ЗАГОЛОВКИ результатов, которые имеют extra1 в качестве meta_key и test в качестве meta_value.
Моя цель -:
- Из таблицы wp_postmeta получите post_id каждой строки, которая имеет extra1 в качестве meta_key и test в качестве meta_value
- Используя post_id, получите post_title для каждой строки на шаге 1 соответственно.
- Выведите post_title
Большое вам спасибо.
Ответ №1:
этот запрос предполагает, что вы работаете со схемой базы данных WordPress:
SELECT post_title
FROM wp_posts
WHERE ID IN
(
SELECT DISTINCT post_id
FROM wp_postmeta
WHERE meta_key = 'extra1' AND meta_value = 'test'
)
второй запрос после комментария Мэйри:
SELECT post_title
FROM wp_posts
WHERE ID IN
(
SELECT DISTINCT post_id
FROM wp_postmeta
WHERE meta_key IN('extra1','extra2','extra3') AND meta_value IN('test','test1','test2','test3')
)
затем вам просто нужно выполнить цикл по набору результатов с помощью php, а затем напечатать заголовок сообщения, как вы предпочитаете:
//connect to DB then ($query contains the query above)
$res = mysql_query($query, $db);
while($row=mysql_fetch_array($res))
{
echo($row['post_title']);
}
Комментарии:
1. Большое вам за это спасибо! Как я могу отредактировать это, чтобы удовлетворить нескольким meta_keys и meta_values, используя И?
2. Я принял ваш ответ. Спасибо за вашу помощь. Однако я хочу спросить, является ли это медленным запросом.
3. возможно, с JOIN это могло бы быть быстрее. Но я предполагаю, что если у вас установлены правильные индексы на meta_key, он должен выполняться довольно быстро