Sql-запрос для отображения некоторых результатов с использованием PHP

#php #sql

#php #sql

Вопрос:

в конце этого я хочу отобразить ЗАГОЛОВКИ результатов, которые имеют extra1 в качестве meta_key и test в качестве meta_value.

Моя цель -:

  1. Из таблицы wp_postmeta получите post_id каждой строки, которая имеет extra1 в качестве meta_key и test в качестве meta_value
  2. Используя post_id, получите post_title для каждой строки на шаге 1 соответственно.
  3. Выведите 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, он должен выполняться довольно быстро