SQL: получить список и использовать все элементы в выводе для другого запроса - PullRequest
0 голосов
/ 12 апреля 2020

Я использую несколько SQL запросов для заполнения таблицы, но я думаю, что также возможно получить его только одним запросом. Вот структура:

Есть таблица 'wp_postmeta'; включая id, post_id, meta_key и meta_value в качестве столбцов. В этой таблице строки с meta_key = x имеют значения идентификатора пользователя в части meta_value. Я хочу получить значение post_id с заданным значением meta_key и идентификатора пользователя (которое находится в части meta_value) и использовать это post_id для получения определенных значений meta_value с заданными meta_keys. Вот пример. Допустим, идентификатор пользователя равен 9:

ВЫБРАТЬ КОНКАТ ((ВЫБРАТЬ «meta_value» ОТ «wp_postmeta» ГДЕ «meta_key» = y И «post_id» = (ВЫБРАТЬ «post_id» ОТ »wp_postmeta« ГДЕ »meta_key» = x AND 'meta_value' = 9)), (SELECT 'meta_value' FROM 'wp_postmeta' WHERE 'meta_key' = z AND 'post_id' = (SELECT 'post_id' FROM 'wp_postmeta' WHERE 'meta_key' = x AND 'meta_value' = 9)), (ВЫБРАТЬ «meta_value» ОТ »wp_postmeta« ГДЕ »meta_key» = w И «post_id» = (ВЫБРАТЬ «post_id» ОТ «wp_postmeta« ГДЕ »meta_key '= x AND' meta_value '= 9)))

С помощью этого запроса я объединил мета-значения для данных мета-ключей, принадлежащих посту, связанному с данным идентификатором пользователя. (У, г, ш). Проблема в том, что я могу правильно получить то, что хочу, для данного идентификатора пользователя, но я хочу дать список идентификаторов пользователей и получить их соответствующие объединенные результаты. Как я могу этого достичь? Спасибо за любую помощь.

1 Ответ

0 голосов
/ 12 апреля 2020

Вы, кажется, описываете что-то вроде этого (используя синтаксис MySQL):

select p.*, group_concat(pm.metavalue) as metavalues
from wp_posts p left join
     wp_postmeta pm
     on pm.post_id =  p.post_id
where p.user_id in ( . . . )
group by p.user_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...