Как вернуть поле в MySQL из подзапроса, связанного с основными результатами запроса? - PullRequest
0 голосов
/ 09 мая 2011

У меня небольшая проблема с запросом, который я использую в базе данных WordPress. Приведенный ниже запрос возвращает правильные и ожидаемые данные для meta_value, но моя проблема связана с тем, что я не получаю поле, возвращаемое для исходного post_id из подзапроса , поэтому я не возможность связать конкретный meta_value с исходным post_id - мне, возможно, придется реструктурировать это, но я немного растерялся, как вернуть эти данные, связанные с найденным им meta_value.

SELECT meta_value
FROM wp_postmeta 
WHERE post_id IN (SELECT meta_value FROM wp_postmeta WHERE post_id IN ('1','2','3','4')) 
AND meta_key = '_wp_attached_file' 

Пример данных

post_id    meta_key            meta_value
1          _thumbnail_id       2
2          _wp_attached_file   image.jpg

Так, в качестве примера, учитывая список из 1 или более post_ids ('1'), я нахожу meta_value ('2') и ищу другую запись с соответствующим post_id ('2') и указанным meta_key (' _wp_attached_file '), и мне нужно вернуть и meta_value (' image.jpeg '), и original post_id (' 1 ')

Заранее спасибо

1 Ответ

2 голосов
/ 09 мая 2011

Просто используйте самостоятельное соединение:

select wp1.*, wp2.* 
from wp_postmeta wp1, wp_postmeta wp2 
where wp2.post_id in (1,2,3) 
and wp1.meta_value = wp2.post_id and wp2.meta_key = '_wp_attached_file';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...